Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1432to1436
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

VBA Arraygröße dynmaisch erweitern ReDim

VBA Arraygröße dynmaisch erweitern ReDim
25.06.2015 08:05:28
Krycho89
Hallo Forumsmitglieder,
ich habe ein Problem mit der dynamischen Erweiterung von einem Array
Mein Code sieht dabei folgendermaßen aus:
  • Sub Search()
    Dim Suchbegriffe()
    Dim newDim as Long
    newDim = UBound(Suchbegriffe,1) + 1
    ReDim Suchbegriffe(1 To newDim)
    Suchbegriffe(1) = Array("*ausrund*", "*blend *", "*blending*")
    Suchbegriffe(2) = Array("*deviation*", "*abweichung*", "*gaps*", "*lücken*")
    Suchbegriffe(3) = Array("*weld*", "*verbindungselemente*", "*dxweld*")
    Suchbegriffe(4) = Array("*data quality*", "*analyse*", "*check tool*")
    Suchbegriffe(5) = Array("*usability*")
    Suchbegriffe(6) = Array("*law extension*")
    Suchbegriffe(7) = Array("*tailored blank*")
    Suchbegriffe(8) = Array("*sketch*")
    Suchbegriffe(9) = Array("*messen*", "*measurement*")

  • Ich bekomme dabei immer die Fehlermeldung "Index außerhalb des gültigen Bereichs"
    Kann mir da jemand weiterhelfen wie ich das machen müsste?
    Viele Grüße Chris

    8
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: VBA Arraygröße dynmaisch erweitern ReDim
    25.06.2015 11:32:57
    Mullit
    Hallo,
    klare Sache: Du kannst nicht die Grenze eines Arrays abfragen, daß noch undimensioniert ist:
    Dim Suchbegriffe()
    Dim newDim As Long
    newDim = UBound(Suchbegriffe, 1) + 1

    Redim muß vorher gesetzt sein...
    Gruß, Mullit

    AW: VBA Arraygröße dynmaisch erweitern ReDim
    25.06.2015 12:37:48
    Krycho89
    Hallo Mullit,
    kann man das dann irgendiwe anders lösen, dass die Länge vom Array, von der Anzahl der Suchbegriffe abhängig ist?
    Viele Grüße Chris

    Ja, ReDim, ...
    25.06.2015 13:40:42
    Luc:-?
    …Chris:
    Dim Suchbegriffe, newDim() As Long

    ReDim Suchbegriffe(
    anzahlSuchbegriffe - 1), newDim(UBound(Suchbegriffe, 1) + 1)
    Gruß, Luc :-?
    Besser informiert mit …

    Anzeige
    AW: VBA Arraygröße dynmaisch erweitern ReDim
    25.06.2015 13:09:28
    Rudi
    Hallo,
    da empfiehlt sich die Verwendung eines Dictionary- oder Collection-Objekts anstatt des Arrays.
    Gruß
    Rudi

    Dafür kann man auch einen anderen Array-Typ ...
    25.06.2015 14:01:03
    Luc:-?
    …Chris;
    eine Möglichkeit hat Rudi genannt, die andere ist ein Variant mit einem (bzw mehreren) Array(s) → Stichwort: Arrays in Arrays
    Dim Suchbegriffe
    Suchbegriffe = Array(Array("*ausrund*", "*blend *", "*blending*"), _
    Array("*deviation*", "*abweichung*", "*gaps*", "*lücken*"), _
    Array("*weld*", "*verbindungselemente*", "*dxweld*"), _
    Array("*data quality*", "*analyse*", "*check tool*"), _
    Array("*usability*"), _
    Array("*law extension*"), _
    Array("*tailored blank*"), _
    Array("*sketch*"), _
    Array("*messen*", "*measurement*"))
    
    Mit Suchbegriffe(3) indizierst du das ganze 4.Teil-Array, also alle 3 Elemente, mit Suchbegriffe(3)(1) nur sein mittleres Element.
    Du hast es übrigens nicht für nötig gehalten, mir hier, trotz Benachrichtigungswahl(!), zu antworten. Falls das deine gängige Praxis wdn soll, du nur antwortest, wenn du noch was willst, kann ich dich nur warnen…!
    Luc :-?

    Anzeige
    AW: VBA Arraygröße dynmaisch erweitern ReDim
    25.06.2015 14:42:48
    Krycho89
    Hallo zusammen,
    Danke für die zahlreichen Antworten. Ich werde die Lösungsvorschläge durcharbeiten und mich zurückmelden.
    Viele Grüße Chris

    AW: Dafür kann man auch einen anderen Array-Typ
    29.06.2015 07:15:55
    Krycho89
    Hallo Luc,
    ich habe eine Frage zu deiner Lösung.
    Wie kann man diesen Array dann auslesen?
    Mein Code dafür sieht so aus:
    
    With Sheets("Datenblatt")
    to_End = .Cells(.Rows.Count, 1).End(xlUp).Row
    For a = LBound(Suchbegriffe, 1) To UBound(Suchbegriffe, 1)
    For i = LBound(Suchbegriffe, 2) To UBound(Suchbegriffe, 2)
    Search = Suchbegriffe(a)(i)
    For j = 2 To to_End
    For sb = 0 To UBound(Search)
    If LCase(.Cells(j, 6).Value) Like Search(sb) Then Exit For
    Next sb
    If sb 
    Es wird die sechste Zeile mit den Suchbegriffen aus dem Worksheet Datenblatt, mit den Werten im Array verglichen.
    Vielen Dank und viele Grüße Chris

    Anzeige
    AW: Dafür kann man auch einen anderen Array-Typ
    29.06.2015 07:56:38
    Krycho89
    Hallo,
    ich habe es hinbekommen
    
    With Sheets("Datenblatt")
    to_End = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = LBound(Suchbegriffe, 1) To UBound(Suchbegriffe, 1)
    Search = Suchbegriffe(i)
    For j = 2 To to_End
    For sb = 0 To UBound(Search)
    If LCase(.Cells(j, 6).Value) Like Search(sb) Then Exit For
    Next sb
    If sb 
    Danke für Alles!
    Gruß Chris

    313 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige