ist das der beste code, um eine for-next-schleife erst dann laufen zu
lassen, wenn die zelle nicht leer ist
Sub EinhErmitteln()
Dim ersteZeile As Long, letzteZeile As Long
Dim i
Dim varZelle As Variant
ersteZeile = Range("B14").Row 'Zähler für die erste Zeile
ersteZeile = ersteZeile + 1 'Zähler um 1 erhöht, damit nach der
Spaltenüberschrift begonnen wird.
letzteZeile = Range("B14").End(xlDown).Offset(0, 0).Row 'Zähler für
die letzte Zeile
'MsgBox ersteZeile
'MsgBox letzteZeile
For i = ersteZeile To letzteZeile
If Range("B" & ersteZeile).Value = "" Then Exit For
Range("E" & i).FormulaLocal = "=SVERWEIS(B" & i &
";xTab_Massnahmen!$A$3:$L$22;6;FALSCH)"
Next
End Sub
warum nimmst du nicht ne do loop schleife.
range("A14").select
do
If Range("B" & activecell.row).Value <> "" then
' mache sverweis
end if
activecell.offset(1,0).select
loop untill activecell.row > letztezeile
wenn du noch ein i drinen brauchst, dann setz vor das do das i=1 und
in die schleife vor das offset i=i +1
> ist das der beste code, um eine for-next-schleife erst dann laufen zu
> lassen, wenn die zelle nicht leer ist
>
[Code ausgeschnitten]
warum machst du solche Verrenkungen wegen der ersten Zeile, wenn du genau
weißt, dass es die Zeile 15 ist. Weise einfach den Wert fest zu. Excel fügt
die Formel auch in Zeilen ein, wenn B leer ist. Dann erhältst du #NV. Warum
dann nicht wie eine Wenn-Formel =Wenn(B15="";"";SVerweis.....)
Dim ersteZeile As Integer
Dim letzteZeile As Long
ersteZeile = 15
With ActiveSheet
letzteZeile = .Cells(Rows.Count, 2).End(xlUp).Row
.Range("E" & ersteZeile).FormulaLocal = _
"=Wenn(B" & ersteZeile & "="""";"""";SVERWEIS(B" & ersteZeile & _
";xTab_Massnahmen!$A$3:$L$22;6;FALSCH))"
.Range("E" & ersteZeile).AutoFill _
Destination:=.Range("E" & ersteZeile & ":E" & letzteZeile)
End With
--
Mit freundlichen Grüssen
Claus Busch
@Web-Interface
Windows XP SP2; Vista Ultimate
Office 2000 SP3; Office2007 Ultimate
Viele (aber nicht alle) Wege führen nach Rom.
Ich würde meinen bevorzugten Code nie als bestmöglichen bezeichnen,
aber ich gebe ihn hier einmal an:
Sub Test()
Dim i as Integer
i = 15
Do While Not Isempty(Cells(i,2))
'Besser .Formula nehmen als .FormulaLocal - sonst läufts nicht
in anderssprachigen Versionen
Cells(i,5).FormulaLocal = "=SVERWEIS(B" & i & ";xTab_Massnahmen!
$A$3:$F$22;6;FALSCH)"
i = i + 1
'Debug.Print "Zeile " & i
Loop
End Sub
Testen würden ich bevorzugt mit Debug.Print. Diese Testausgaben kannst
Du dann einfach im VBA Editor ansehen nach Drücken von STRG + g
Viele Grüße,
Bernd
okay, dein code hat mich überzeugt und ich lass das mit den
verrenkungen; nochmals DANKE