Ich bin auf folgendes VBA Problem gestoßen:
Um mehrer NICHT NEBENEINANDER liegende Zeilen auszublenden, erzeugt mein Programm einen String, der die Zeilen speichert
zB:(A1,A324,A645,A3567,....)
Das können auch schon mal > 500 Zeilen werden.
Nachdem dieser String produziert wurde, habe ich versucht mit "Range" die Zeilen anzusprechen:
Sheet1.Range(String).EntireRow.Hidden = True
(Man könnte auch jede andere Aktion außer Hide nehmen, das Problem bleibt das Selbe)
Das funktioniert auch soweit, bis auf das Problem, dass der String nicht mehr als 255 Zeichen haben darf, ansonsten "schlägt die Methode Range fehl"
Hier mal ein Beispielcode, der das verdeutlichen soll:
Sub Macro1()
Dim Text As String
Dim r As Integer
Text = "A1"
r = 2
Do
Text = Text & ",A" & r
r = r + 1
If Len(Text) > 254 Then Exit Do
Loop
MsgBox Len(Text)
Sheet1.Range(Text).EntireRow.Hidden = True
Sheet1.Rows.EntireRow.Hidden = False
End Sub
Die Funktion dieses Beispielmakros ist natürlich vollkommen sinnlos!Bei meiner Anwendung liegen die Zeilen ausserdem(wie schon gesagt) NICHT nebeneinander.
Wenn man hier 253 statt 254 einfügt, funktioniert der Code.
Kann mir jemand sagen, woran das liegt?
String sollte doch weit mehr speichern können als 255 Zeichen?
Gibt es einen anderen Datentyp ausser String mit dem das geht?
Oder einen anderen Befehl ausser Range?
Im Moment teile ich den String einfach immer, sobald er zu lange wird. Das funktioniert auch, nur ist es nicht so schnell(Laufzeit) und nicht besonders schön gelöst.
Vielen Dank für eure Hilfe im Voraus!
Mfg