Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Einzelnen Wert aus Variable auslesen

Forumthread: Einzelnen Wert aus Variable auslesen

Einzelnen Wert aus Variable auslesen
03.03.2019 17:57:44
reiner
Hallo Leute,
der Inhalt der Variablen:"TagVorhanden" enthält z.B. folgende Einträge: ",3,4,5,6,9,10,13,16,17,18,20,24,25,26,27,30"
Nun will ich nacheinander den Inhalt auslesen und den jeweiligen Wert (zwischen zwei Kommas, von links) an die "VariableTag" übergeben. Beim ersten Durchlauf soll lediglich eine "3" in "VariableTag" geschrieben werden. Beim nächsten Durchlauf soll dort "4" stehen, usw. bis beim letzten Durchlauf die "30" übergeben wird.
In einem anderen Projekt habe ich seinerzeit diverse Zelladressen mit Spalten- und Zeilenadressierung aus einer Variablen ausgelesen nach dem folgenden Programmcode und damit die jeweiligen Zellen markiert:
Private Sub VariableAuslesen()
Dim Markierung$, AddString As String, TeilString As Variant, VariableTag%
Markierung = Mid(TagVorhanden, 3)
AddString = Markierung
For Each TeilString In Split(AddString, ",")
'   Intersect(Range(TeilString).EntireRow, Range("A:H")).Font.Bold = True
mit vorstehender Zeile war es möglich Zelladressen auszulesen und in der Tabelle zu markieren.
Next
End Sub
Im aktuellen Projekt soll lediglich ein Zahlenwert wie oben beschrieben extrahiert und an anderer Stelle im Makro verarbeitet werden.
Meine Frage lautet: Wie muss der Programmcode umgeschrieben werden damit die "VariableTag" mit Inhalt gefüllt wird?
mfg
reiner
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einzelnen Wert aus Variable auslesen
03.03.2019 18:06:08
Hajo_Zi
Hallo Reiner,
Option Explicit
Sub Trennen()
Dim StWert As String
Dim Loi As Long
StWert = ",3,4,5,6,9,10,13,16,17,18,20,24,25,26,27,30"
StWert = Mid(StWert, 2)
For Loi = 1 To Len(StWert)
MsgBox Left(StWert, InStr(StWert, ",") - 1)
StWert = Mid(StWert, InStr(StWert, ",") + 1)
If InStr(StWert, ",") = 0 Then
MsgBox "Letzter Wert " & StWert
Exit For
End If
Next Loi
End Sub


Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
oder kürzer
03.03.2019 18:16:53
Hajo_Zi

Sub Trennen2()
Dim StWert As String
Dim Loi As Long
Dim ArrWert
StWert = ",3,4,5,6,9,10,13,16,17,18,20,24,25,26,27,30"
StWert = Mid(StWert, 2)
ArrWert = Split(StWert, ",")
For Loi = 0 To UBound(ArrWert)
MsgBox ArrWert(Loi)
Next Loi
End Sub

Gruß Hajo
Anzeige
AW: oder kürzer
03.03.2019 18:57:00
reiner
Hallo Hajo,
das klapptschon wunderbar,
aber eine Frage habe ich noch obwohl ich sie vorhin nicht gestellt habe;
das Problem habe ich eben erst beim Testen erkannt.
Bei deinem Vorschlag wird jeweils ein Wert nach dem anderen in der MsgBox angezeigt bis die Variable ausgelesen (leer) ist.
Bei mir wird der Programmcode nach jedem Durchlauf verlassen und danach erneut aufgerufen.
Somit müsste der gerade angezeigte Wert aus der Variablen nach dem Auslesen bewusst herausgelöscht werden.
Hast du bitte für diesen Zusatzwunsch noch einen Vorschlag?
danke
Anzeige
AW: oder kürzer
03.03.2019 18:59:14
Hajo_Zi
bei mir wird der Code nur einmal ausgeführt.
dazu kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.
Gruß Hajo
AW: oder kürzer
03.03.2019 19:06:24
reiner
ich habe mich da wohl unklar ausgedrückt
was ich sagen wollte: nach jedem Anzeigen des Werts in der MsgBox wird bei mir der Wert in eine Variable übergeben, deine Routine verlassen und die gerade gefüllte Variable im vorhandenen Makro ausgeführt.
Danach wird deine Routine erneut aufgerufen um den 2. Wert auszulesen.. usw. bis alles ausgelesen ist.
Anzeige
AW: oder kürzer
03.03.2019 19:28:11
Hajo_Zi
keine Ahnug wqarum du meine Prozedur mehrmals ausfürst.
Ich kann Dire Leider nicht helfen, was ich ja schon mitgeteilt habe.
Ich bin dan raus.
Noch viel Erfolg.
Gruß Hajo
AW: oder kürzer
04.03.2019 10:12:39
Nepumuk
Hallo Reiner,
warum willst du die Routine verlassen? Rufe das andere Makro aus der Schleife heraus auf und übergib den Wert als Parameter. So nach dem Muster:
Sub ErstesMakro
For Each x in y
Call AnderesMakro(x)
Next
End Sub
Sub AnderesMakro(x As Variant)
MsgBox x
End Sub

Gruß
Nepumuk
Anzeige
AW: oder kürzer
04.03.2019 11:18:22
reiner
Hallo Nepumuk
gute Idee, danke
mfG
reiner
AW: oder kürzer
03.03.2019 19:49:54
onur
Hallo Hajo,
Nix für Ungut, aber solange du deine Standard-Floskel "was wohl daran liegt das ich nicht auf fremde Rechner schaue" benutzt statt klipp und klar zu sagen: "solange du nicht endlich die Datei bzw den kompletten Code postest", musst du damit rechnen, daß du nicht immer auf Anhieb verstanden wirst.
Gruß
Onur
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Einzelnen Wert aus Variable auslesen in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen einzelnen Wert aus einer Variablen in Excel VBA auszulesen, kannst du den folgenden Programmcode verwenden. Dieser Code nimmt die Variable TagVorhanden und extrahiert die Werte nacheinander.

Option Explicit

Sub EinzelneWerteAuslesen()
    Dim TagVorhanden As String
    Dim ArrWert As Variant
    Dim i As Long

    TagVorhanden = ",3,4,5,6,9,10,13,16,17,18,20,24,25,26,27,30"

    ' Entferne das führende Komma
    TagVorhanden = Mid(TagVorhanden, 2)

    ' Splitte die Werte in ein Array
    ArrWert = Split(TagVorhanden, ",")

    ' Schleife durch das Array
    For i = LBound(ArrWert) To UBound(ArrWert)
        ' Hier kannst du den Wert an die "VariableTag" übergeben
        Dim VariableTag As Integer
        VariableTag = CInt(ArrWert(i))
        ' Verarbeite die VariableTag hier weiter
        MsgBox VariableTag ' Beispiel: Wert anzeigen
    Next i
End Sub

Häufige Fehler und Lösungen

  1. Fehler: "Typenkonflikt"

    • Lösung: Stelle sicher, dass die Variable VariableTag als Integer deklariert ist und dass die Werte im Array tatsächlich Zahlen sind.
  2. Fehler: "Index außerhalb des gültigen Bereichs"

    • Lösung: Überprüfe, ob das Array ArrWert tatsächlich Werte enthält, bevor du durch das Array iterierst.

Alternative Methoden

Eine alternative Methode zur Verarbeitung von Werten aus einer Variablen ist, die Werte direkt in einer Schleife zu verarbeiten, ohne ein Array zu verwenden. Hier ein Beispiel:

Sub WerteDirektVerarbeiten()
    Dim TagVorhanden As String
    Dim StWert As String
    Dim Wert As String

    TagVorhanden = ",3,4,5,6,9,10,13,16,17,18,20,24,25,26,27,30"
    StWert = Mid(TagVorhanden, 2)

    Do While StWert <> ""
        Wert = Left(StWert, InStr(StWert, ",") - 1)
        MsgBox Wert ' Wert anzeigen
        StWert = Mid(StWert, InStr(StWert, ",") + 1)
    Loop
End Sub

Praktische Beispiele

Ein praktisches Beispiel für die Anwendung deiner Werte könnte sein, sie in eine Excel-Tabelle zu schreiben:

Sub WerteInTabelleSchreiben()
    Dim TagVorhanden As String
    Dim ArrWert As Variant
    Dim i As Long

    TagVorhanden = ",3,4,5,6,9,10,13,16,17,18,20,24,25,26,27,30"
    ArrWert = Split(Mid(TagVorhanden, 2), ",")

    For i = LBound(ArrWert) To UBound(ArrWert)
        Cells(i + 1, 1).Value = CInt(ArrWert(i)) ' Werte in die erste Spalte schreiben
    Next i
End Sub

Tipps für Profis

  • Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Verwende MsgBox nur zu Debugging-Zwecken. Für die endgültige Version des Codes solltest du die Ausgabe in ein Arbeitsblatt oder eine Protokolldatei schreiben.
  • Denke daran, die Variablen nach der Verwendung zu leeren oder zu setzen, um Speicher zu sparen, besonders wenn du mit großen Datenmengen arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich die Werte direkt in eine andere Subroutine übergeben?
Du kannst die Werte in einer Schleife an eine andere Subroutine übergeben, indem du sie als Parameter übergibst, wie im Beispiel von Nepumuk gezeigt.

2. Was mache ich, wenn ich nur bestimmte Werte verarbeiten möchte?
Du kannst Bedingungen in deine Schleife einfügen, um nur die Werte zu verarbeiten, die bestimmten Kriterien entsprechen.

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