ich habe mir vor einiger Zeit ein Makro aus vielen Komponenten und zugegebenermaßen mit fremder Hilfe zusammengebaut, welches innerhalb einer Markierung leere Zellen mit dem Wert der vorhergehenden Zelle auffüllt, bis ein neuer Wert auf den Plan tritt.
Sub Ausfüllen()
Dim w As Variant
Dim c As Range
Application.ScreenUpdating = False
For Each c In Selection
If c.Value "" Then
w = c.Value
Else
c.Value = w
c.Font.ColorIndex = 37
c.Font.Bold = False
End If
Next c
Application.ScreenUpdating = True
End Sub
Das funktioniert wunderbar und ist nützlich. In letzter muß ich aber mit sehr umfangreichen Tabellen arbeiten, die keine leeren Zellen haben dürfen (dann greifen nachfolgende Formeln nicht). Es ist jedoch etwas mühsam, in bspw. 4 Spalten immer von Zeile 1 bis 2.000 die Markierung zu setzen. Deswegen habe ich gerade versucht, dort eine Schleife einzubauen.
Sub Ausfüllen2()
Dim w As Variant
Dim c As Range
Application.ScreenUpdating = False
c = ActiveCell
Do Until IsEmpty(c)
If c.Value "" Then
w = c.Value
Else
c.Value = w
c.Font.ColorIndex = 37
c.Font.Bold = False
End If
Application.ScreenUpdating = True
Loop
End Sub
Aber ich bekomme eine Fehlermeldung: "Laufzeitfehler 91; Objektvariable oder With Blockvariable nicht festgelegt".
Auch wenn ich dieses lösen kann, weiß ich nicht, wie ich realisieren kann, daß die Aktion für die 2, 3 und 4 Spalte durchgeführt wird, wenn die erste durchlaufen ist. Mir fällt auch gerade auf, daß die Anweisung "until is empty" den Sinn dieses Makros konterkariert... Mir ist aber kein Schleifentyp bekannt, der das leisten könnte. Entweder gebe ich den Range in Form von Zeilen an 1:2.000 oder aber ich nutze die letzte Zeile, die bei meinen Tabellen von Hause aus fett geschrieben ist. Also Until font.color.bold = true.
Und danach zur nächste Spalte. Via Offset?!
Die Konstruktion eines derartigen Makros übersteigt meine Fähigkeit in VBA bei weitem. Jede einzelne Komponente ist für mich noch nachvollziehbar. Aber ich bekomme sie nicht kombiniert.
Könnte ihr mir sagen, mit welchen Methoden und Anweisungen das Ziel erreiche? (start in zeile 1/ spalte 1, ausfüllen until font = bold, next spalte, wiederholen, until spalte = 4)
Vielen Dank für eure Ideen und Mühen.
Grüße aus Berlin, Andreas Hanisch