in einer Zelle stehen folgende Zeichenketten: CS_XYZ_1 oder DR_1234
Wie kann ich per VBA die Zellen ansprechen, die ein CS_ als Anfang haben?
Danke für Eure Hinweise.
Public Sub hen()
Dim strZelle As String
strZelle = "DR_1234"
MsgBox Mid(strZelle, 1, 3)
End Sub
Public Sub langsam()
Dim lngA As Long
For lngA = 1 To 400000
If InStr(Cells(1, 1), "CS") Then
End If
Next
MsgBox "Fertig"
End Sub
Public Sub schneller()
Dim lngA As Long
For lngA = 1 To 400000
If Mid(Cells(1, 1), 1, 2) = "CS" Then
End If
Next
MsgBox "Fertig"
End Sub
Ich schätze so ca. ein Drittel schneller ist die Mid-Funktion hierbei.Um Zeichen aus einer Zeichenkette in Excel per VBA auszulesen, kannst Du folgende Schritte befolgen:
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul
.
Kopiere und füge den folgenden VBA-Code ein:
Public Sub ZeichenAuslesen()
Dim strZelle As String
strZelle = Cells(1, 1).Value ' Hier wird die Zelle angesprochen
If Left(strZelle, 2) = "CS" Then
MsgBox "Die Zeichenkette beginnt mit CS."
Else
MsgBox "Die Zeichenkette beginnt nicht mit CS."
End If
End Sub
Schließe den VBA-Editor und führe das Makro aus, um das Ergebnis zu sehen.
Mit dieser Methode kannst Du das erste Zeichen aus einem String auslesen und feststellen, ob es mit einem bestimmten Wert beginnt.
Fehler: Typen unverträglich
Cells(1, 1).Value
anstelle von Cells(1, 1).Text
.Fehler: Objektvariable nicht festgelegt
Problem: Der Code liefert kein erwartetes Ergebnis.
If
-Bedingung korrekt formuliert hast, z.B. If Left(strZelle, 2) = "CS"
.Falls Du die Zeichen aus einem String bis zu einem bestimmten Zeichen auslesen möchtest, kannst Du die InStr
-Funktion nutzen:
Public Sub ZeichenBis()
Dim strZelle As String
strZelle = Cells(1, 1).Value
Dim pos As Integer
pos = InStr(strZelle, "_") ' Sucht nach dem ersten Unterstrich
If pos > 0 Then
MsgBox Left(strZelle, pos - 1) ' Gibt den Teilstring bis zum Unterstrich zurück
End If
End Sub
Diese Technik ist besonders nützlich, wenn Du einen Teilstring ab einem bestimmten Zeichen auslesen möchtest.
Ersten 3 Zeichen auslesen:
Public Sub ErsteDreiZeichen()
Dim strZelle As String
strZelle = Cells(1, 1).Value
MsgBox Left(strZelle, 3) ' Gibt die ersten 3 Zeichen aus
End Sub
Zeichen ab einem bestimmten Index auslesen:
Public Sub ZeichenAbIndex()
Dim strZelle As String
strZelle = Cells(1, 1).Value
MsgBox Mid(strZelle, 4) ' Gibt den Teilstring ab dem 4. Zeichen aus
End Sub
Mittlere Zeichen ausgeben:
Wenn Du die Zeichen in der Mitte einer Zelle auslesen möchtest, kannst Du dies mit Mid
tun:
Public Sub MittlereZeichen()
Dim strZelle As String
strZelle = Cells(1, 1).Value
MsgBox Mid(strZelle, 2, 3) ' Gibt 3 Zeichen ab dem 2. aus
End Sub
InStr
-Funktion, um die Position eines bestimmten Zeichens in einem String zu finden, bevor Du mit Left
, Mid
oder Right
arbeitest.Mid
-Funktion ist oft schneller als InStr
in vielen Anwendungsfällen.1. Wie kann ich den ersten Buchstaben eines Strings auslesen?
Du kannst die Left
-Funktion verwenden, um den ersten Buchstaben auszulesen:
MsgBox Left(strZelle, 1)
2. Wie lese ich einen Teilstring aus einer Zelle in Excel VBA aus?
Verwende die Mid
-Funktion, um einen Teilstring aus einer Zelle auszulesen:
MsgBox Mid(strZelle, StartPos, AnzahlZeichen)
3. Kann ich mit VBA auch Zeichen in der Mitte eines Strings suchen?
Ja, Du kannst die Funktion InStr
nutzen, um die Position eines Zeichens in einem String zu finden und dann mit Mid
den gewünschten Teilstring auslesen.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen