Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1384to1388
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

If-Abfrage

If-Abfrage
12.10.2014 10:11:14
Franz
Guten Morgen Fachleute,
ich möchte in einer einzigen If-Abfrage gleichzeitig zwei Dinge abfragen, krieg das aber nicht hin:
- es geht um eine Menge von Zellen
- einige haben einen Kommentar, aber nicht alle
- es soll geprüft werden, ob in der Zelle ein bestimmter Begriff zu finden ist
- in den Zellen, die einen Kommentar haben, soll zusätzlich geprüft werden, ob dieser Begriff im Kommentar enthalten ist
Ich dachte ich könnte das so lösen:

with cells(t,m)
If .Value Like "*(xyz)*" Or Not .Comment Is Nothing And .Comment.Text Like "*(xyz)*" Then


Das klappt aber nur bei Zellen MIT Kommentar. Bei Zellen OHNE Kommentar gibt's eine Fehlermeldung.
Läßt sich das nicht in einer Abfrage kombinieren? Oder wie kann ich's schreiben, dass es funktioniert? Dazu bitte ich um Eure Hilfe
Danke schonmal und Grüße
Franz

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If-Abfrage
12.10.2014 10:12:53
Hajo_Zi
Hallo Franz,
du musst vorher prüfen ob Kommentar.
oder mit not Isrror()
Ich baue nichts nach.

AW: If-Abfrage
12.10.2014 10:15:46
Franz
Hallo Hajo,
ja, ich weiß, dass ich vorher auf einen Kommentar prüfen muss. Und das tue ich ja auch in der Abfrage. Aber es geht so nicht.
Grüße
Franz

Mehrere If-Blöcke
12.10.2014 10:30:56
{Boris}
Hi,
...Or Not .Comment Is Nothing And .Comment.Text Like "*(xyz)*" Then
Wenn kein Kommentar vorhanden ist (Not.Comment Is Nothing), dann kannst Du in der selben Prüfung nicht den Text auslesen.
Also nach diesem Prinzip:
If Not .Comment Is Nothing Then
If .Comment.Text Like .... Then
'Machwas
End If
End If
VG, Boris

Anzeige
AW: Mehrere If-Blöcke
12.10.2014 10:39:35
Franz
Hallo Boris,
ja, hab's schon so befürchtet: ich muss das also zweimal prüfen, seh ich das richtig?
Einmal für:
If .Value Like "*(xyz)*"
Und dann nochmal für
If Not .Comment Is Nothing Then
If .Comment.Text Like .... Then
'Machwas
End If
End If
Die Sache ist die, dass nach der Abfrage ein Rattenschwanz von Anweisungen -Machwas- folgt. Und den wollte ich nicht zweimal schreiben müssen.
Danke und Grüße
Franz

AW: Mehrere If-Blöcke
12.10.2014 10:43:53
{Boris}
Hi Franz,
ich muss das also zweimal prüfen, seh ich das richtig?
Genau. Wenn also - in Deinem Fall - eine Objektprüfung FALSCH ist (es ist also kein Kommentar vorhanden), dann darfst Du nicht innerhalb der selben Prüfung eine Eigenschaft (hier: Text) des Objektes abfragen, da das Objekt ja gar nicht vorhanden ist. Logisch, dass es eine Fehlermeldung gibt.
Machst Du das hingegen in Blöcken, wird die Text-Abfrage "übersprungen", wenn eben kein Kommentar vorhanden ist.
VG, Boris

Anzeige
AW: Mehrere If-Blöcke
12.10.2014 10:45:59
Franz
Hallo Boris,
gut, hab's kapiert....
Vielen Dank und viele Grüße Dir
Franz

Code nicht zweimal schreiben, ...
12.10.2014 10:58:17
Christian
Hallo Franz,
Die Sache ist die, dass nach der Abfrage ein Rattenschwanz von Anweisungen -Machwas- folgt. Und den wollte ich nicht zweimal schreiben müssen.
Da gibt es verschiedene Wege.
Denn es macht sicher keinen Sinn einen Code zweimal zu schreiben. Wenn du dann was änderst, musst du das immer 2 mal ändern. Das ist sehr fehlerträchtig.
Du kannst zB. bei deinen IF-Afragen jeweils eine Boolean-Variable auf True setzen.
Und nach den IF-Afragen:
If blnFnd = True Then
' dein Rattenschwanz von Anweisungen
End If
oder du lagerst deine Anweisungen aus und rufst diese Prozedur in den IF-Afragen auf
Call MeineAnweisungen
oder ...
Gruß
Christian

Anzeige
AW: Code nicht zweimal schreiben, ...
12.10.2014 11:03:35
Franz
Hallo Christian,
ja, danke, das mit dem Problem bei Änderungen, wenn der Code zweimal geschrieben ist, ist mir auch schon gekommen. U. a. deshalb wollte ich das auf ein Mal abfragen.
Aber die Idee mit der boolschen Variablen find ich genau richtig, das gefällt mir gut - genau das werd ich machen!!
Vielen Dank dafür und viele Grüße
Franz

ohne Mehrfach-Rattenschwanz
12.10.2014 11:00:55
Erich
Hi Franz,
beim "If" kannst du nicht viel sparen, wohl aber beim "Rattenschwanz".
So etwa nach diesem Muster:

Sub abcde()
With Cells(3, 4)
If .Value Like "*(xyz)*" Then
DoIt
ElseIf Not .Comment Is Nothing Then
If .Comment.Text Like "*(xyz)*" Then DoIt
End If
MsgBox .Comments.Count
End With
MsgBox Cells(1, 1).Comments.Count
End Sub
Sub DoIt()
MsgBox "DoIt"
' und der Rest des Rattenschwanzes...
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schönen Restsonntag allerseits!

Anzeige
ohne Mehrfach-Rattenschwanz - nochmal ohne Fehler
12.10.2014 11:02:27
Erich
Hi Franz,
beim "If" kannst du nicht viel sparen, wohl aber beim "Rattenschwanz".
So etwa nach diesem Muster:

Sub abcde()
With Cells(3, 4)
If .Value Like "*(xyz)*" Then
DoIt
ElseIf Not .Comment Is Nothing Then
If .Comment.Text Like "*(xyz)*" Then DoIt
End If
End With
End Sub
Sub DoIt()
MsgBox "DoIt"
' und der Rest des Rattenschwanzes...
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schönen Restsonntag allerseits!

AW: ohne Mehrfach-Rattenschwanz - nochmal ohne Fehler
12.10.2014 11:12:55
Franz
Hallo Erich,
ja, danke auch Dir! Jetzt hab ich verschiedene Möglichkeiten zur Auswahl, so kann ic h's auch machen.
Vielen Dank und Grüße
Franz

Anzeige
nochmal Danke Euch allen! .......
12.10.2014 13:09:19
Franz
...... es funktioniert einwandfrei!!
Beste Grüße
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige