Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1364to1368
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

String für "Range" zu lange

String für "Range" zu lange
16.06.2014 15:55:40
TripplK
Hallo!
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String für "Range" zu lange
16.06.2014 16:03:53
Rudi
Hallo,
Union() ist das Zauberwort.
Motto:
Sub aa()
Dim rngA As Range, rngH As Range
For Each rngA In ActiveSheet.UsedRange.Columns(1).Cells
If rngA = "" Then
If rngH Is Nothing Then
Set rngH = rngA
Else
Set rngH = Union(rngH, rngA)
End If
End If
Next
If Not rngH Is Nothing Then
rngH.EntireRow.Hidden = True
End If
End Sub

Gruß
Rudi

AW: String für "Range" zu lange
16.06.2014 16:34:27
TripplK
Hallo Rudi!
Vielen Dank für den Tipp mit Union!!
War genau das, was ich gebraucht habe; läuft super.
Beste Grüße!
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige