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
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:
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
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.
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
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
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´)
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)
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.