Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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 Limit umgehen

String Limit umgehen
31.05.2020 23:23:52
Peter
Hallo,
ich habe eine Reihe von Namen die jeweils ein oder mehrere Zellblöcke als Adressen beinhalten. Jetzt muss ich diese Adressen in meinem Code verwenden. Alle Namen sind in einer Tabelle (Tabelle4) aufgelistet und ich hole mir mit Range("FileName.xlsm!Name").Address die Adressen.
Jetzt hab ich das Problem, dass er gar nicht die ganzen Adressen rausschreibt und nach etwas Testen scheint es eine Limitierung der Stringlänge von nameAddresses zu geben
Das ist der Code:
Private Sub liesAdressenAusNamen()
Dim tableLength As Integer '/// Länge der Tabelle
Dim tableStartRow As Integer '/// relative Anfangszeile der Datensätze
Dim tableStartColumn As Integer '/// relative Anfangsspalte der Datensätze
Dim loopVar1 As Integer '/// Laufvariable (Mehrfachverwendung!)
Dim fileName As String '///Variable für den Dateinamen
Dim nameAddresses() As String '/// Variable für die gesamte Range-Adresse eines Namens
Dim namesFromList As Variant '/// Variable zum auslesen der Namen aus Tabelle4
tableLength = Tabelle1.ListObjects("Tabelle4").Range.Rows.Count - 1
tableStartColumn = Tabelle1.ListObjects("Tabelle4").Range(2, 1).Column
tableStartRow = Tabelle1.ListObjects("Tabelle4").Range(2, 1).Row
fileName = Application.ThisWorkbook.Name
' Liest die Adressen der Namen aus Tabelle4 aus und schreibt sie ins Array nameAdresses (ab  _
Index 1)
For loopVar1 = 1 To tableLength
namesFromList = Tabelle1.Cells(loopVar1 + tableStartRow - 1, tableStartColumn)
ReDim Preserve nameAddresses(loopVar1)
On Error Resume Next ' wird getriggert falls einer der gelisteten Namen in Tabelle4 gar  _
nicht als Name im Sheet definiert ist
nameAddresses(loopVar1) = Range(fileName & "!" & namesFromList).Address
Tabelle7.Cells(loopVar1 + 1, 1).Value = nameAddresses(loopVar1) ' #### Fehlersuche: zum  _
Testen was er in das array schreibt
Next
End Sub

Das ergibt die Funktion LÄNGE bei den in Tabelle7 eingetragenen Strings
Userbild
Das Auslesen der Adressen scheint auf 255 Zeichen limitert zu sein. Was kann ich tun um die ganze Adresse auszulesen?
Grüße
Peter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String Limit umgehen
31.05.2020 23:44:39
Daniel
Hi
Um den Adressstring einer solchen Range vollständig auszulesen, müsstest du das
strAddress = Range("Name").Address

Durch diese Schleife ersetzen:
dim A as Rang
For each A in Range("Name").Areas
strAddress = strAddress & "," & A.Address
Next
strAddress = Mid(strAddress, 2) 
Aber beachte, du hast richtig erkannt, dass es für die Adresse einer Range das Limit von 256 Zeichen gibt, sowohl beim Auslesen mit Range(...).Adresse, wie auch beim Ansprechen des Zwllbereichs mit Range("Adresse"), auch hier darf der String nicht länger als 255 Zeichen sein.
Frohe Pfingsten
Daniel
Anzeige
AW: String Limit umgehen
01.06.2020 00:10:58
Peter
Perfekt!
Die Methode Areas hatte ich gar nicht auf dem Schirm, damit schlage ich sogar 2 Fliegen mit eine Klappe. denn im nächsten Schritt würden die einzelnen Adressen aus dem String herausgezogen und in ein Array gelegt werden.
Fetten Dank und Grüße
Peter
AW: String Limit umgehen
01.06.2020 00:20:50
onur
Sorry, Daniel - Du warst schneller!
Hatte ich nicht aktualisiert.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige