Microsoft Excel

Herbers Excel/VBA-Archiv

Probleme mit like

Betrifft: Probleme mit like von: Franz W.
Geschrieben am: 23.09.2014 16:29:15

Hallo Fachleute,

ich hab folgendes, das funtkioniert:

With cells(x, y)
If .Value Like "*Beispiel_1*" Or .Value Like "*Beispiel_2*" Or .Value Like "*Beispiel_3*" Or . _
Value Like "*Beispiel_4*" Or .Value Like "*Beispiel_5*" Or .Value Like "*Beispiel_6*" Or .Value Like "*Beispiel_7*" Or .Value Like "*Beispiel_8*" Then
     .Interior.ColorIndex = 7
end if
end with

Diese Abfrage wird nun aber an mehreren Stellen in verschiedenen Makros benötigt. Darum wollte ich das Ganze vereinheitlichen wir folgt:

in einem benamten Bereich stehen untereinander die Suchkriterien "Beispiel_1" bis "Beispiel_8" - der Bereich hat den Namen "SonderFormat"

und abfragen wollte ich diesen Bereich mit:
Dim rngSForm as range

With cells(x, y)
For each rngSForm in Range("SonderFormat")
  If .value like "*rngSForm *" then
    .Interior.ColorIndex = 7
  end if
next
end with

Das geht aber leider nicht. Was mache ich da falsch? Muss ich anders deklarieren? Oder geht es überhaupt nicht so? Ich hab Verschiedenes ausprobiert, krieg's aber nicht hin. Drum bitte ich um Eure Hilfe.

danke schonmal und Grüße
Franz

  

Betrifft: AW: Probleme mit like von: Daniel
Geschrieben am: 23.09.2014 16:58:00

Hi
probiers mal so

Dim rngSForm as range

With cells(x, y)
For each rngSForm in Range("SonderFormat")
  If .value like "*" & rngSForm.Value &  "*" then
    .Interior.ColorIndex = 7
    Exit For
  end if
next
end with
oder so, dann läuft die Schleife nicht über die Zellen, sondern die Inhalte eines Arrays, was etwas schneller ist (was sich bei der Datenmenge aber nicht bemerkbar machen sollte)
Dim SForm

With cells(x, y)
For each SForm in Range("SonderFormat").Value
  If .value like "*" & SForm &  "*" then
    .Interior.ColorIndex = 7
    Exit For
  end if
next
end with

Das Exit For bricht nach dem ersen Färben die Schleife ab.
Es ist dann ja nicht mehr notwendig, dass die weitern Werte auch noch geprüft werden.

Gruß Daniel


  

Betrifft: AW: Probleme mit like von: Franz W.
Geschrieben am: 23.09.2014 17:06:04

Hallo Daniel,

vielen Dank, das funktioniert! Wär ich nicht drauf gekommen, die Sternchen extra zu schreiben, das hab ich nicht versucht...

Und Du hast recht, der Unterschied ist in diesem Fall tatsächlich nicht spürbar. Aber wer weiß, vielleicht brauch ich's ja mal an anderer Stelle.

Danke nochmal und Grüße
Franz


  

Betrifft: AW: Probleme mit like von: Luschi
Geschrieben am: 23.09.2014 17:21:59

Hallo Franz,

die Lösung von Daniel ist aber nicht voll kompatibel mit Deiner Forderung:
If .Value Like "*Beispiel_1*" Or .Value Like "*Beispiel_2*" ...

Hier entsprechen die folgenden Begriffe:
'abBeispiel_1xy', 'ooBeispiel_1', 'abBeispiel_2zz', 'Beispiel_3rr', ...
alle dem Like-Muster und die entsprechende Zelle wird eingefärbt.

Denn ist nur wichtig, ob die Wörter 'Beispiel_1', 'Beispiel_2' usw. im Zellwert vorkommen,
egal was vorn und hinten noch so steht.

Hier muß man mit RegExp (RegularExpression) arbeiten. Bin z.Z leider unterweg - schau noch mal später hier rein.

Gruß von Luschi
aus klein-Paris



  

Betrifft: AW: Probleme mit like von: Franz W.
Geschrieben am: 23.09.2014 17:36:20

Hallo Luschi,

eigentlich brauch ich's genauso. Aber ich werde sehen, was Du vorschlägst, vielleicht verstehe ich dann was Du meinst. Aber bitte bedenke, dass ich xl2003 habe, den Begriff RegExp findet meine VBA-Hilfe nicht.

(bin auch erst spät wieder da)

Grüße
Franz