Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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

Anzeige

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

Anzeige
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!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige