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-Key: 73412

Url: https://administrator.de/contentid/73412

Printed on: April 26, 2024 at 00:04 o'clock

Member: RDiller
RDiller Nov 13, 2007 at 16:07:55 (UTC)
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
Member: coxsrcrub
coxsrcrub Nov 13, 2007 at 17:09:18 (UTC)
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
Member: coxsrcrub
coxsrcrub Nov 14, 2007 at 09:16:50 (UTC)
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