Microsoft Excel

Herbers Excel/VBA-Archiv

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

Wenn Wert in A1 vorkommt, dann in Zelle C7

Betrifft: Wenn Wert in A1 vorkommt, dann in Zelle C7 von: Wolfgang
Geschrieben am: 05.11.2012 19:13:48

Hallo,
mein nachfolgender Versuch, eine Zellabfrage vorzunehmen, scheitert kläglich. Ich würde gerne abfragen, ob eines der genannten Wörter in Zelle A1 vorkommt, wenn ja, soll der Wert (es kommt jeweils immer nur eines dieser Wörter vor) in Zelle C7 Tabelle Quelle übernommen werden. Danke schon jetzt für die Rückmeldung.
Gruß - Wolfgang

Sub Test()
If Worksheets("Quelle").Range("A1").Value Like "*bezahlt*" Or "*gestundet*" Or "*nicht bekannt*" _
 _
 Then
Range("C7").Value = Range("A1").Value Like "*bezahlt*" Or "*gestundet*" Or "*nicht bekannt*"
Else
MsgBox "Nicht vorhanden", vbExclamation
End If
End Sub

  

Betrifft: AW: Wenn Wert in A1 vorkommt, dann in Zelle C7 von: Hajo_Zi
Geschrieben am: 05.11.2012 19:25:28

If Instr(Worksheets("Quelle").Range("A1"),"bezahlt")>0 or
GrußformelHomepage


  

Betrifft: Typen unverträglich von: Wolfgang
Geschrieben am: 05.11.2012 19:41:30

Hallo Hajo,
erneut zunächst herzlichen Dank für Deine schnelle Rückmeldung. Habe Deinen Hinweis aufgegriffen und versucht, sinnvoll fortzusetzen. Irgendetwas mache ich da verkehrt. Hast Du direkt eine Idee, wo ich da falsch liege?
Gruß Wolfgang

If InStr(Worksheets("Quelle").Range("A1"), "bezahlt") > 0 Or "gestundet" > 0 Or "nicht bekannt"  _
> 0 Then



  

Betrifft: AW: Typen unverträglich von: Hajo_Zi
Geschrieben am: 05.11.2012 19:47:42

Hallo Wolfgang,

If InStr(Worksheets("Quelle").Range("A1"), "bezahlt") +InStr(Worksheets("Quelle").Range("A1"), " _
nicht bezahlt")  >0

Gruß Hajo


  

Betrifft: AW: Typen unverträglich von: Hajo_Zi
Geschrieben am: 05.11.2012 19:51:38

Hallo Wolfgang,

If InStr(Worksheets("Quelle").Range("A1"), "bezahlt")>0 Then
Range("C7")="bezahlt"
elseif InStr(Worksheets("Quelle").Range("A1"), "nicht bezahlt")  >0 then
Range("C7")="nicht bezahlt"
End if

Gruß Hajo


  

Betrifft: Danke Hajo!!! von: Wolfgang
Geschrieben am: 05.11.2012 20:02:25

Hallo Hajo,
da hätte ich mir noch lange die Zähne ausgebissen und nicht hinbekommen. Umsomehr herzlichen Dank für Deine erneute Rückmeldung und Überlassung des Codes. Der Code läuft nun tadellos und prima. Hast mir sehr geholfen!
Gruß - Wolfgang


  

Betrifft: AW: Wenn Wert in A1 vorkommt, dann in Zelle C7 von: Gerd L
Geschrieben am: 05.11.2012 19:41:28

Hallo Wolfgang,

so á la deiner Version. Ich unterstelle, dass beide Zellen im Sheet Quelle sind.

Sub Test()

With Worksheets("Quelle")

If .Range("A1").Value Like "*bezahlt*" _
Or .Range("A1").Value Like "*gestundet*" _
Or .Range("A1").Value Like "*nicht bekannt*" Then
    .Range("C7").Value = .Range("A1").Value
Else
    MsgBox "Nicht vorhanden", vbExclamation
End If

End With

End Sub
Gruß Gerd


  

Betrifft: AW: Wenn Wert in A1 vorkommt, dann in Zelle C7 von: Wolfgang
Geschrieben am: 05.11.2012 19:48:25

Hallo Gerd,
auch Dir herzlichen Dank für die schnelle Rückmeldung. Problem ist bei Deinem Code, dass er momentan den gesamten Inhalt aus Zelle A1 in C7 kopiert. Es soll dabei aber jeweils nur das gesuchte Wort übertragen werden.
Gruß - Wolfgang


  

Betrifft: AW: Wenn Wert in A1 vorkommt, dann in Zelle C7 von: Gerd L
Geschrieben am: 05.11.2012 20:01:02

Ach so, Wolfgang!

Sub Test()

With Worksheets("Quelle")

If .Range("A1").Value Like "*bezahlt*" Then
    .Range("C7") = "bezahlt"
ElseIf .Range("A1").Value Like "*gestundet*" Then
    .Range("C7") = "gestundet"
ElseIf .Range("A1").Value Like "*nicht bekannt*" Then
    .Range("C7").Value = "nicht bekannt"
Else
    MsgBox "Nicht vorhanden", vbExclamation
End If

End With

End Sub
Den Like-Operator benötigst du nur, wenn die drei alternativen Wörter in A1 nicht den ganzen
Zelleninhalt ausmachen.

Gruß Gerd


  

Betrifft: Danke Gerd!! von: Wolfgang
Geschrieben am: 05.11.2012 20:10:35

Hallo Gerd,
hatte Hajo soeben ein Feedback geschrieben, um Dir eigentlich zu schreiben, dass sich meine Anfrage durch den Code von Hajo erledigt hat. Hat sich zeitlich überschnitten. Habe Deinen Code auch "eingebaut" und probiert, er läuft nun auch tadellos und prima. Meine Frage hat sich somit doppelt gelöst und geklärt. Ich hätte es auf keinen Fall, so kann feststellen, hinbekommen. Nochmals recht herzlichen Dank!
Gruß - Wolfgang


  

Betrifft: AW: Wenn Wert in A1 vorkommt, dann in Zelle C7 von: Hajo_Zi
Geschrieben am: 05.11.2012 20:13:49

Hallo Gerd,

sehe ich das falsch? Ich hätte vermutet im Suchwort sind die "*" nicht notwendig.

Gruß Hajo


  

Betrifft: und wenn in A1-noch nicht bezahlt steh? owT Gruß von: robert
Geschrieben am: 05.11.2012 20:20:09




  

Betrifft: AW: und wenn in A1-noch nicht bezahlt steh? owT Gruß von: Hajo_Zi
Geschrieben am: 05.11.2012 20:26:22

Danke


  

Betrifft: Mal was Grundsätzliches, ... von: Luc:-?
Geschrieben am: 05.11.2012 20:07:32

…Wolfgang und alle, die das so falsch machen;
If vergleicht grundsätzlich Ausdrücke, die einen Booleschen Wert liefern bzw deren Wert in einen solchen umgewandelt wdn kann, auf True. Dann wird die Folgeanweisung ausgeführt, sonst, falls vorhanden, die Else- bzw nächste ElseIf-Anweisung.
Ein Ausdruck dieser Art xy=x Or y wird wie folgt aufgelöst: (xy=x) Or (y≠0) ⇒ True|False Or True|False ⇒ immer True außer bei False Or False!
Deshalb klappt das bei dir nicht!
Gruß Luc :-?


  

Betrifft: Genauer eigentl wie folgt, ... von: Luc:-?
Geschrieben am: 07.11.2012 16:09:46

…Wolfgang & Interessenten;
in Pgmiersprachen wie zB J(ava)Script wird mitunter zwischen wert- und bitweisen LogikOperationen unterschieden. Dafür wdn dann oft unterschiedl Operatoren verwendet. In VBA ist das etwas anders. Es wdn zwar auch beide Operationsarten verwendet, welche aber jeweils angewendet wird, hängt vom Kontext, also auch der Notationsreihenfolge der Operatoren ab. Ein VglsOperator (auch Like gehört dazu) hat Vorrang vor einem LogikOperator, so dass hier erst der Vgl xy=x durchgeführt wird. Dadurch ergibt sich ein Boolescher Wert (True bzw False, was -1 bzw 0 entspricht). Dieser wird nun per Disjunktion bitweise mit y verknüpft, woraus sich eine Zahl ergibt.
In einer If…Then-Anweisung wird diese Zahl, abhängig von ihrem Wert, nun wieder als True oder False interpretiert. Dabei entspricht 0 False, alles Andere True.
Luc :-?