coxsrcrub
Goto Top

VB Syntax Makro if then else

if "textxy" *18* then ........... end if

Guten Morgen zusammen,

ich baue gerade ein Makro unter W2003 welches unter anderem einen Wert aus dem Feld "Text59" auslesen soll um dann das aktive Dokument weiter zu bearbeiten. Es soll lediglich geprüft werden ob z.B. die Zahl/Variable 18 enthalten ist. Ich finde irgendwie keine Beschreibung wie ich festlegen kann das der Wert nicht gleich 18 ist sondern nur Anteilig die Zahl 18 enthält. Die Zeichen * und % sind mir als erstes im Gedanken gekommen, sind aber falsch.

Wer hilft mir mal schnell auf die Sprünge?

Hier mal der bisherige Syntax dazu:

H18 und Datei wurden vorab per Dim definiert.

So in etwa habe ich mir das gedacht, funktioniert natürlich nur wenn der Wert genau 18 ist!
Wenn der Wert nun eben nicht genau 18 entspricht bekomme ich dann natürlich einen Laufzeitfehler 13, weil die Werte nicht der Vorgabe entsprechen.

If ActiveDocument.Bookmarks("Text59").Range.Text = 18 Then ActiveDocument.SaveAs H18 & Datei
MsgBox "Das Dokument wurde verarbeitet"

da ich nun eine ziemlich dilettantische Übergangslösung einsetze bin ich für alle weiteren Lösungen offen. Die Select Case Anweisung scheint ja hierfür auch irgendwie möglich zu sein. Der betreffende Auszug aus dem "Meisterwerk" face-wink sieht derzeit wie folgt aus:

If (ActiveDocument.Bookmarks("Text59").Range.Text = "18") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "18a") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "18b") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "18c") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "18d") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "Haus18") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "Haus 18") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "H18") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "18A") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "18B") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "18C") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "18D") Then
ActiveDocument.SaveAs H18 & Datei
MsgBox "Das Dokument wurde für die Kostenstelle 18 verarbeitet"
End If


Grüße Jörg

Content-ID: 73412

Url: https://administrator.de/forum/vb-syntax-makro-if-then-else-73412.html

Ausgedruckt am: 27.12.2024 um 02:12 Uhr

RDiller
RDiller 13.11.2007 um 17:07:55 Uhr
Goto Top
Probier doch mal die INSTR Funktion

z.B.:
Suchtext = ActiveDocument.Bookmarks("Text59").Range.Text
gefunden = instr(Suchtext,"18") 'Wenn der Suchstring vorhanden, gibt die Funktion TRUE zurück
if gefunden
ActiveDocument.SaveAs H18 & Datei
MsgBox "Das Dokument wurde für die Kostenstelle 18 verarbeitet"
End If
coxsrcrub
coxsrcrub 13.11.2007 um 18:09:18 Uhr
Goto Top
Hi,

das sieht gut aus. Werde ich gleich Morgen mal austesten. Die Funktion war sogar meine erste Wahl, habe den Syntax offensichtlich wohl vorab völlig verdreht. 0face-smile

Grüße Jörg
coxsrcrub
coxsrcrub 14.11.2007 um 10:16:50 Uhr
Goto Top
Hallo,

ist genau das was ich wollte.

Der betreffende Auszug sieht nun wie folgt aus.

Suchtext = ActiveDocument.Bookmarks("Text59").Range.Text
gefunden = InStr(Suchtext, "18")
If gefunden Then
ActiveDocument.SaveAs H18 & Datei '
MsgBox "Das Dokument wurde für die Kostenstelle 18 verarbeitet"
End If

Lediglich für die Kostenstellen 1 habe ich weiter die alte Syntax stehen gelassen. Eine 01 oder eine andere Bezeichnung bekomme ich in die Köpfe nicht rein. Man sieht ja schon das die Möglichen eingaben so versucht werden über das Makro zu Standardisieren.

If ActiveDocument.Bookmarks("Text59").Range.Text = "1" Or (ActiveDocument.Bookmarks("Text59").Range.Text = "1a") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "1b") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "1c") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "1A") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "1B") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "1C") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "Haus1") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "Haus 1") Or (ActiveDocument.Bookmarks("Text59").Range.Text = "H1") Then
ActiveDocument.SaveAs H1 & Datei
MsgBox "Das Dokument wurde für die Kostenstelle 1 verarbeitet"
End If

Grüße Jörg