Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA Case Prüfen ob Teilstring in String enthalten

Betrifft: VBA Case Prüfen ob Teilstring in String enthalten von: Johann
Geschrieben am: 25.07.2014 17:18:58

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

  

Betrifft: AW: VBA Case Prüfen ob Teilstring in String enthalten von: Michael
Geschrieben am: 25.07.2014 17:40:24

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


  

Betrifft: AW: VBA Case Prüfen ob Teilstring in String enthalten von: Johann
Geschrieben am: 25.07.2014 18:00:53

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


  

Betrifft: AW: VBA Case Prüfen ob Teilstring in String enthalten von: UweD
Geschrieben am: 25.07.2014 17:52:04

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



  

Betrifft: AW: VBA Case Prüfen ob Teilstring in String enthalten von: Johann
Geschrieben am: 25.07.2014 18:05:29

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


  

Betrifft: Viell solltest du besser mal sagen, worum es ... von: Luc:-?
Geschrieben am: 25.07.2014 18:10:43

…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 :-?


  

Betrifft: AW: Viell solltest du besser mal sagen, worum es ... von: Johann
Geschrieben am: 25.07.2014 18:16:33

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.


  

Betrifft: AW: Viell solltest du besser mal sagen, worum es ... von: Michael
Geschrieben am: 25.07.2014 18:59:22

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


  

Betrifft: select case true von: Rudi Maintaire
Geschrieben am: 25.07.2014 22:31:17

Hallo,
VAR=Range("A1")
select case true
case lcase(VAR) is like "coal*", lcase(VAR) is like "steinkohle*"
'mach was
end select

Gruß
Rudi


  

Betrifft: hehe -;) owt von: Michael
Geschrieben am: 26.07.2014 14:46:54




 

Beiträge aus den Excel-Beispielen zum Thema "VBA Case Prüfen ob Teilstring in String enthalten"