Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

mehrere Werte einer Variable zuordnen

Forumthread: mehrere Werte einer Variable zuordnen

mehrere Werte einer Variable zuordnen
13.01.2020 15:44:24
Albert
Hallo Gemeinde, habe folgenden Code. Dabei sollen gewisse Ereignisse ausgeführt werden, bei bestimmter Anzahl an Ebenen. Aus diesen Grund habe ich die Makros aufgeteilt(unten drei Ebenen bsp. 3.3.222).
Ich habe nun folgendes Problem, dass ich noch !2! weitere Ebenen dazu programmieren muss (insgesamt 5). Dies ergibt aufgrund des Potenzierens eine extrem hohe Anzahl an Variablen. Gibt es die Möglichkeit dies evtl. mit Variablen mit mehreren Werten zu kürzen? Vielen Dank.
Bsp.:
3.34.555.66.33
2.111.22.333
333.4.333.22.2
7.555.44.555
Hier ein Teil aus dem Code
Sub ()
'******************************************drei Ebenen
For i = 3 To 1000
If Cells(i, 1) Like "#.#" _
Or Cells(i, 1) Like "#.##" _
Or Cells(i, 1) Like "#.###" _
Or Cells(i, 1) Like "##.#" _
Or Cells(i, 1) Like "##.##" _
Or Cells(i, 1) Like "##.###" _
Or Cells(i, 1) Like "###.#" _
Or Cells(i, 1) Like "###.##" _
Or Cells(i, 1) Like "###.##" Then
For m = 0 To 1000
If Cells(i + 1 + m, 1) Like "#.#" _
Or Cells(i + 1 + m, 1) Like "#.##" _
Or Cells(i + 1 + m, 1) Like "#.###" _
Or Cells(i + 1 + m, 1) Like "##.#" _
Or Cells(i + 1 + m, 1) Like "##.##" _
Or Cells(i + 1 + m, 1) Like "##.###" _
Or Cells(i + 1 + m, 1) Like "###.#" _
Or Cells(i + 1 + m, 1) Like "###.##" _
Or Cells(i + 1 + m, 1) Like "###.###" Then
Exit For
End If
If Cells(i + 1 + m, 1) Like Cells(i, 1) & ".#" _
Or Cells(i + 1 + m, 1) Like Cells(i, 1) & ".##" _
Or Cells(i + 1 + m, 1) Like Cells(i, 1) & ".###" Then
'Ereignis A
End If
Next m
If t = 1 Then
'Ereignis B
End If
End If
Next i
End Sub
Vielen Dank.
Gruß
Albert
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beispieldatei
13.01.2020 15:49:58
Fennek
Hallo,
zeige bitte eine Beispieldatei mit allen möglichen Varianten im Ist- und Soll-Zustand.
mfg
AW: Beispieldatei
13.01.2020 16:06:19
Albert
Hallo Fennek,
https://www.herber.de/bbs/user/134366.xls
und noch mal als Information, es geht mir jetzt nur um Positionen, bei denen eine vierte bzw. fünfte Ebene vorhanden ist. Bei den anderen ist der Code schon geschrieben. Ich bräuchte sozusagen einen Code für vier Ebenen und einen für fünf. Mir würde auch ein Ansatz reichen.
Vielen Dank!
Anzeige
AW: Beispieldatei
13.01.2020 16:17:45
peterk
Hallo
Hast Du schon einmal an die SPLIT Funktion gedacht?
AW: sorry, unverständlich
13.01.2020 16:36:30
Fennek
Hallo Alexander,
so wie Excel das anzeigt, ist es für mich nicht nachvollziehbar. LO zeigt zwar die alten Inhalte an, das hilft aber auch nicht weiter.
Kann man die Ebene durch die Anzahl der Punkte erkennen? Also "2.333" ist die zweite Ebene, "2.333.22.44" die vierte Ebene.
Die Daten ist wohl mit Excel 2003 erstellt, weder LO noch Xl2016 zeigen ein Gruppierung von Ebenen an.
sorry
mfg
Anzeige
AW: doppelte Schleife?
13.01.2020 16:38:46
Fennek
In der Ausgangsfrage wird ein VBA-Code mit 2 geschachtelten Schleifen 1..1000 gezeigt. Das ist zwar auch nicht nachvollziehbar, muss aber in jedem Fall besser gehen.
AW: doppelte Schleife?
13.01.2020 16:46:31
Albert
das zählen der Punkte ist eine Option. ich weiß gerade nur nicht wie. Aber google hilft mir da bestimmt ;)
danke für die Idee!!
und wegen der geschachtelten Schleife geht es nicht anders. Weil ich einerseits die Obere Ebene ansteuern möchte und anschließend die dazugehörigen Positionen.
Gruß
Anzeige
AW: doppelte Schleife?
13.01.2020 16:55:56
UweD
Hallo
so in Etwa

TText = "123.456.001"
Anz = Len(TText) - Len(Replace(TText, ".", ""))

LG UweD
AW: doppelte Schleife?
13.01.2020 17:02:34
Albert
Hallo UweD
ja das war es... perfekt!!!
Danke für die Rückmeldung. (owT)
14.01.2020 09:48:45
UweD
Anzeige
AW: doppelte Schleife?
13.01.2020 17:13:22
Albert
so sieht jetzt der Code aus:
Sub f()
k = 3
For h = 1 To 5
For i = 3 To 1000
Anz = Len(Cells(i, 1)) - Len(Replace(Cells(i, 1), ".", ""))
If Anz = h Then
Anz = 0
For m = 0 To 1000
Anz = Len(Cells(i + 1 + m, 1)) - Len(Replace(Cells(i + 1 + m, 1), ".", ""))
If Anz = h Then
Exit For
End If
If Cells(i + 1 + m, 1) Like Cells(i, 1) & ".#" _
Or Cells(i + 1 + m, 1) Like Cells(i, 1) & ".##" _
Or Cells(i + 1 + m, 1) Like Cells(i, 1) & ".###" Then
Next m
If t = 1 Then
End If
End If
Next i
Next h
End Sub

Anzeige
;
Anzeige

Infobox / Tutorial

Mehrere Werte einer Variable in Excel VBA zuordnen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere den VBA-Editor:

    • Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf "Projekt" im Projektfenster und wähle "Einfügen" > "Modul".
  3. Füge deinen Code ein:

    • Kopiere den bereitgestellten Code in das Modul. Hier ist ein Beispiel, das die Anzahl der Ebenen zählt:
    Sub CountLevels()
       Dim TText As String
       Dim Anz As Integer
       TText = "123.456.001"
       Anz = Len(TText) - Len(Replace(TText, ".", ""))
       MsgBox "Anzahl der Ebenen: " & Anz
    End Sub
  4. Anpassen des Codes für mehrere Ebenen:

    • Wenn du deinen Code für vier oder fünf Ebenen anpassen möchtest, kannst du die Schleifenstruktur erweitern. Hier ein Beispiel für die Anpassung:
    Sub AdjustLevels()
       Dim h As Integer
       For h = 1 To 5
           ' Hier kommt dein Code für die verschiedenen Ebenen
       Next h
    End Sub
  5. Testen des Codes:

    • Führe den Code aus, indem du F5 drückst oder im Menü auf "Ausführen" klickst. Die Anzahl der Ebenen wird in einer Message-Box angezeigt.

Häufige Fehler und Lösungen

  • Fehler: Unzureichende Variablenzuweisung: Stelle sicher, dass alle Variablen korrekt deklariert sind. Verwende Dim für jede Variable, die du verwendest.

  • Fehler: Schleifen laufen endlos: Überprüfe die Bedingungen in deinen Schleifen. Eine falsche Bedingung kann dazu führen, dass die Schleife nicht beendet wird.

  • Lösung: SPLIT-Funktion verwenden: Denke daran, die SPLIT-Funktion anzuwenden, um den Text einfach in seine Komponenten zu zerlegen. Beispiel:

    Dim Werte() As String
    Werte = Split(TText, ".")
    MsgBox "Anzahl der Werte: " & UBound(Werte) + 1

Alternative Methoden

  • Verwenden von Excel-Formeln: Du kannst auch Excel-Formeln verwenden, um die Anzahl der Ebenen zu zählen. Eine einfache Formel könnte so aussehen:

    =LEN(A1)-LEN(SUBSTITUTE(A1,".",""))
  • VBA-Funktionen optimieren: Wenn dein Code zu komplex wird, ziehe in Betracht, mehrere VBA-Funktionen zu erstellen, um die Lesbarkeit und Wartbarkeit zu verbessern.


Praktische Beispiele

  1. Ebenen zählen:

    • Beispieltext: 3.34.555.66.33
    • Verwende den oben genannten Code, um die Anzahl der Ebenen zu ermitteln.
  2. Ereignisse auslösen:

    • Du kannst Ereignisse basierend auf der Anzahl der Ebenen auslösen, indem du eine If-Anweisung verwendest.
    If Anz = 4 Then
       ' Ereignis für 4 Ebenen
    End If

Tipps für Profis

  • Code modularisieren: Teile deinen Code in verschiedene Subroutinen auf, um die Wartbarkeit zu erhöhen.

  • Fehlerbehandlung einbauen: Füge Fehlerbehandlungsroutinen hinzu, um Laufzeitfehler elegant zu handhaben.

  • Regelmäßige Backups: Mache regelmäßig Sicherungen deiner Arbeitsmappe, insbesondere wenn du mit VBA arbeitest.


FAQ: Häufige Fragen

1. Wie viele Ebenen kann ich maximal in Excel VBA verwenden?
Theoretisch gibt es keine Begrenzung für die Anzahl der Ebenen, aber die Komplexität deines Codes kann die Leistung beeinträchtigen.

2. Was ist der Unterschied zwischen einer For-Schleife und einer While-Schleife?
Eine For-Schleife wird für eine bestimmte Anzahl von Iterationen verwendet, während eine While-Schleife so lange läuft, wie eine Bedingung erfüllt ist.

3. Kann ich die SPLIT-Funktion in allen Excel-Versionen verwenden?
Ja, die SPLIT-Funktion ist in VBA ab Excel 97 verfügbar. Stelle sicher, dass du eine geeignete Version verwendest.

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