Avatar billede Chewie Novice
16. juni 2003 - 14:17 Der er 18 kommentarer og
2 løsninger

Makro - hvis cellen er tom

Hej

Jeg savner en makro der kan, hvis en celler er tom (i et område) skriv "HVI -" i cellen

En der kan hjælpe ??

chewie
Avatar billede somaliomar Praktikant
16. juni 2003 - 14:29 #1
Sådan noget her?

If IsEmpty(ActiveCell) Then
  ActiveCell = "HVI -"
End If
Avatar billede Chewie Novice
16. juni 2003 - 14:33 #2
Virker den ikke på hele arket ??

det skal kun være i et bestemt område !
Avatar billede somaliomar Praktikant
16. juni 2003 - 14:38 #3
i et bestemt område ? Hvad mener du med det?
Avatar billede Chewie Novice
16. juni 2003 - 14:40 #4
Hvis der findes en tom celle i A1:F8 skal der skrives "HVI -" i den
Avatar billede clemen Nybegynder
16. juni 2003 - 15:20 #5
Prøv med denne her, virker hos mig. sat op til A1:F8

Public Sub tomme()
    Const iCol As Long = 5 ' antal kolonner der søges igennem
    Const iRow As Long = 8 ' antal rækker der søges igennem
    Dim lcols As Long
    Dim lRows As Long
   
    For lcols = 1 To iCol
        For lRows = 1 To iRow
            If Cells(lRows, lcols).Value = "" Then
                Cells(lRows, lcols).Value = "HVI -"
            End If
        Next lRows
    Next lcols
   
End Sub
Avatar billede Chewie Novice
16. juni 2003 - 15:28 #6
Så er den der næsten :o)

Lige bortset fra at at mit område ser sådan ud:
=B5:K5;B7:K7;B9:K9;B11:K11;B13:K13;B15:K15;B17:K17;B19:K19;B21:K21

så jeg kan desværre ikke bruge din makro (undskyld hvis jeg ikke foreklarede mig godt nok første gang) :(
Avatar billede monnypenny Nybegynder
16. juni 2003 - 16:45 #7
chewie: Hvorfor ikke bare bruge 1 minut på at formulere dit spørgsmål ordentligt, så du ikke spilder andres tid med at give gode råd du ikke kan bruge?

Du kunne bare skrive:


Hej

Jeg savner en makro der kan, hvis en celler er tom (i et område) skriv "HVI -" i cellen. Området der skal undersøges er B5:K5;B7:K7;B9:K9;B11:K11;B13:K13;B15:K15;B17:K17;B19:K19;B21:K21

En der kan hjælpe ??

chewie

Nå, løsningen kan være at lave en procedure, der modtager rækkenummer (fra-til) og kolonnenummer (fra-til), og så kalde den et antal gange:

  CheckForBlank(5,5,2,11) 'Række 5-5, kolonne 2-11 (=B5-K5)
  CheckForBlank(7,7,2,11) 'Række 5-5, kolonne 2-11 (=B7-K7)
  ... osv

Og så definere CheckForBlank præcis som clemen har skrevet, hvor den blot modtager argumenterne i procedurehovedet.
Avatar billede martin_moth Mester
16. juni 2003 - 16:50 #8
chewie: Du kan sagtens bruge løsningen fra clemen. Her har jeg lavet en løsning med udgangspunkt i clemens svar (lidt omskrevet), der virker på præcist det område du har angivet:

Public Sub tomme()
    Dim iCol As Byte
    Dim iRow As Byte
   
    For iCol = 2 To 11
        For iRow = 5 To 21 Step 2
            If Cells(iRow, iCol).Value = "" Then
                Cells(iRow, iCols.Value = "HVI -"
            End If
        Next iRow
    Next iCol
End Sub
Avatar billede martin_moth Mester
16. juni 2003 - 16:51 #9
Ups. Et sted har jeg skrevet iCols. Der skal stå iCol (uden "s")
Avatar billede clemen Nybegynder
17. juni 2003 - 07:30 #10
Hej martin kan du forklare mig hvorfor du bruger "as byte". Jeg er nemlig ret ny i VBA programmering og prøver at lære lidt. Derfor synes jeg denne opgave var sjov at gå igang med.
Avatar billede clemen Nybegynder
17. juni 2003 - 08:24 #11
næsten det samme

Public Sub tomme()
    Const iCol As Long = 11
    Const iRow As Long = 21
    Dim lcols As Long
    Dim lRows As Long
   
    For lcols = 2 To iCol
        For lRows = 5 To iRow Step 2
            If Cells(lRows, lcols).Value = "" Then
                Cells(lRows, lcols).Value = "HVI -"
            End If
        Next lRows
    Next lcols
   
End Sub
Avatar billede Chewie Novice
17. juni 2003 - 09:06 #12
Hej monnypenny

Jeg har snart stillet over 500 spm i katten excel (vil jeg tro)

Det er somregl altid jkrons, bak, flemmingdahl, janvogt, blackadder (undsklyld hvis jeg har glemt en) der svare ..... deres løsninger pleje at være så dynamiske at jeg selv kan rette den til efterfølgende

men man skal ikke tage alting for givet ..... så endnu gang undskyld det var min fejl

håber nummer to undskyldning bliver bedre modtaget ..... da den første til syneladende ikke var god nok

chewie
Avatar billede Chewie Novice
17. juni 2003 - 09:09 #13
Hej alle

Jeg er ikke helt med på hvordan jeg får dette puttet ind i Jeres makro´er ??

B5:K5;B7:K7;B9:K9;B11:K11;B13:K13;B15:K15;B17:K17;B19:K19;B21:K21

chewie
Avatar billede clemen Nybegynder
17. juni 2003 - 09:15 #14
Det er puttet ind.

kolonner B til K svarer til tallen icol og Lcols 2(B) og 11 (K)

for rækkerne 5, 7 op til 21
start 5
for lrows =5
spring på 2
Step 2 den næste gang bliver så 7
forsætter sådan indtil 21

Først tager den kolonne 2 (B) og tjekker rækkerne 5, 7 op til 21
så tager den kolonne 3(C) og tjekker rækkerne 5, 7 op til 21
sådan forsætter makroen til kolonne 11(K´)
Avatar billede Chewie Novice
17. juni 2003 - 10:01 #15
Argh ...OK smart :o)

(jeg hæver lige points og ligger et tilægs-spørgsmål)

en lille udvidelse til macro´en :o)

Hvis jeg nu har to områder

område 1 som tidligere

område 2 = =B6:K6;B8:K8;B10:K10;B12:K12;B14:K14;B16:K16;B18:K18;B20:K20;B22:K22
i dette område er det ikke "HVI - " der skal skrives, men "TBA - "

det skal køre i en makro ....

kan det løses ?
Avatar billede clemen Nybegynder
17. juni 2003 - 10:07 #16
Public Sub tomme()
    Dim lcols As Long
    Dim lRows As Long
   
    For lcols = 2 To 11
        For lRows = 5 To 21 Step 2
            If Cells(lRows, lcols).Value = "" Then
                Cells(lRows, lcols).Value = "HVI -"
            End If
        Next lRows

        For lRows = 6 To 22 Step 2
            If Cells(lRows, lcols).Value = "" Then
                Cells(lRows, lcols).Value = "TBA -"
            End If
        Next lRows

    Next lcols
   
End Sub

Prøv denne det skulle bare virke.
Avatar billede Chewie Novice
17. juni 2003 - 10:18 #17
Super ... mange tak hjælpen
Avatar billede martin_moth Mester
17. juni 2003 - 10:34 #18
chewie: As Byte:

En variabel der er erklæret som Byte kan indeholde værdierne 0-255. Det er mere end rigeligt, og det er "spild af plads" at bruge en Integer eller en Long, der kan indeholde langt større værdier (og derved aftager mere plads i hukommelsen)

Men det er rent og skært flueknepperi - du kan vist ikke måle forskel i sådan et lille program på en hurtig PC.

Det er tydeligt, at du er helt grøn i programmering - og det er jo fint nok, at du så går i gang :o) Men derfor vil jeg henvise til, at der er masser af tutorials til VB6 på nettet - søg på tutorial her på Eksperten, og få en masse links. Ellers køb en bog - du sparer MANGE timer ved at læse og forstå FØR du programmerer. Bare et godt råd :o)

Tak for de 10 :o)
Avatar billede Chewie Novice
17. juni 2003 - 14:59 #19
Hov ... jeg glemte at nævne b_hansen tidligere
Avatar billede martin_moth Mester
17. juni 2003 - 15:21 #20
?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel-kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester