Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1372to1376
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 Case Prüfen ob Teilstring in String enthalten

VBA Case Prüfen ob Teilstring in String enthalten
25.07.2014 17:18:58
Johann
Hallo zusammen,
wie würdet ihr den folgende Code ergänzen, wenn die Formatierung erhalten bleiben soll, wenn "COAL" oder "Steinkohle" noch ein zusätzliches Zeichen erhalten kann, wie z.B. COAL_2
oder COAL_A oder ...?
...
Case "COAL", "Steinkohle"
.Interior.ColorIndex = 1
...
Euch allen ein schönes WE!
Viele Grüße
Johann

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Case Prüfen ob Teilstring in String enthalten
25.07.2014 17:40:24
Michael
Hallo Johann,
in Deinem Beispiel sind es mit dem Unterstrich ZWEI Zeichen. Aber wenn der denn schon da ist, kann man auch danach suchen.
Wenn Du den ursprünglichen Inhalt der Variable noch brauchst, würde ich ihn zum Vergleich in CASE in eine weitere Variable kopieren, hier eben vgl_string: den kannst Du dann vor dem Unterstrich abschneiden und CASEn:
Sub Makro1()
test_string = "Steinkohle_A"
posi = InStr(1, test_string, "_")
If posi > 0 Then vgl_string = _
Mid(test_string, 1, posi - 1) _
Else vgl_string = test_string
MsgBox test_string & " " & vgl_string
End Sub
Schönes Wochenende,
Michael

Anzeige
AW: VBA Case Prüfen ob Teilstring in String enthalten
25.07.2014 18:00:53
Johann
Hallo Michael,
ielen Dank für die schnelle Antwort!
Leider ist der nicht immer da. Es kann eine Zeichenfolge, beginnend mit einem Leerzeichen oder einem Unterstrich und weiteren Zeichen folgen. Wieviele Zeichen danach noch angehängt werden können, kann ich jetzt noch nicht abschätzen, aber wohl nicht mehr als 10.
Gibt es in VBA nicht sowas in der Art wie COAL*?
Viele Grüße
Johann

AW: VBA Case Prüfen ob Teilstring in String enthalten
25.07.2014 17:52:04
UweD
Hallo
meinst du das so?
Sub Makro1()
Dim Test$
Test = "COAL_1"
Select Case InStr(Test, "COAL") Or InStr(Test, "Steinkohle")
Case Is > 0
MsgBox "Treffer"
'.Interior.ColorIndex = 1
Case Else
MsgBox "mache nichts"
End Select
End Sub

Anzeige
AW: VBA Case Prüfen ob Teilstring in String enthalten
25.07.2014 18:05:29
Johann
Hi Uwe,
vielen Dank für die schnelle Antwort!!
Ich befürchte ich habe mich bei meiner Frage unpräzise ausgedrückt.
Es können mehr als ein Zeichen angehängt werden.
Welche genau und wieviele ist ex ante unbekannt, jedoch sollten es nicht mehr als 10 sein.
Viele Grüße
Johann

Viell solltest du besser mal sagen, worum es ...
25.07.2014 18:10:43
Luc:-?
…insgesamt geht, Johann,
denn das Archiv enthält 100e Lösungen vglbarer Fälle. Da ist mit Sicherheit auch eine für dein eigentliches Problem dabei.
Ansonsten geht so etwas prinzipiell mit Vglsoperator Like, also bspw: If … Like "*COAL*" Then
Gruß, Luc :-?

Anzeige
AW: Viell solltest du besser mal sagen, worum es ...
25.07.2014 18:16:33
Johann
Hallo Luc,
es geht darum die Datenreihen in meinen Pivot Charts immer gleich einzufärben.
Viele meiner Diagramme habe immer dieselben Legendeneinträge, z.B. Primärenergieträger.
Mit Case funktioniert mein Code recht gut.
Es kann abe rvorkommen, dass ich zusätrzliche Informationen brauche, z.B. ob zum Energieträger Erdgas Gasturbinen (das wäre die zusätzliche Zeichenfolge _GT) oder Kombikraftwerke ( das wäre _GuD) installiert sind. Die ziehe ich mir dann noch zusätzlich in meine Reihen.

AW: Viell solltest du besser mal sagen, worum es ...
25.07.2014 18:59:22
Michael
Hallo zusammen,
Lucs Vorschlag klingt doch gar nicht so schlecht?
Im Grunde isses schon egal, ob man eine Reihe IFs oder CASEs untereinanderschreibt.
In Deinen weiteren Beispielen sind aber trotzdem nur Unterstriche vorhanden. Du könntest ja eine weitere Suche nach Leerzeichen vornehmen und das dann für den vgl_string abschneiden.
Sub Makro1()
test_string = "Steinkohle_A"
posi = InStr(1, test_string, "_")
If posi > 0 Then vgl_string = _
Mid(test_string, 1, posi - 1) _
Else vgl_string = test_string
posi = InStr(1, test_string, " ")
If posi > 0 Then vgl_string = _
Mid(test_string, 1, posi - 1) _
Else vgl_string = test_string
MsgBox test_string & " " & vgl_string
End Sub
Mit der Methode schneidest Du auf alle Fälle alles ab, egal, wieviele Zeichen noch kommen.
Ein grundsätzlich anderer Weg wäre, die Anhängsel in eine extra Spalte zu setzen, dann ersparst Du Dir die Programmierung.
Schöne Grüße,
Michael

Anzeige
select case true
25.07.2014 22:31:17
Rudi
Hallo,
VAR=Range("A1")
select case true
case lcase(VAR) is like "coal*", lcase(VAR) is like "steinkohle*"
'mach was
end select
Gruß
Rudi

hehe -;) owt
26.07.2014 14:46:54
Michael

75 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige