Word-VBA If Then Bedingung?

1 Antwort

Hallo,

Ich bin leider absoluter VBA Neuling und kann mit den ganzen VBA Begriffen, wie Sub und Co. nichts anfangen.

Ohne dass das in irgendeiner Art und Weise negativ gemeint ist, jeder fängt ja mal irgendwann an, aber dann wird es mit Erklärungen schwierig. Ein paar Grundkenntnisse sollten schon vorhanden sein.

Als ich damals mit wirklich keinerlei Vorkenntnissen angefangen habe, mir VBA für Word selbst beizubringen, war mir dieses Buch von Bernd Held eine unglaubliche Hilfestellung und ist es bis heute. Aber an das Buch ist heute nur noch schwer ranzukommen.

Du hast geschrieben:

(...), da es aber am Ende einige Dropdownelemente werden, hätte ich das gerne in VBA sortiert angezeigt.

Ich verstehe ehrlich gesagt nicht ganz, wie du das meinst. Was genau möchtest du denn erreichen? Was willst du sortieren? Die Ergebnisse der Dropdownfelder?

Außerdem wäre eine weitere Frage, wie ich definiere, wo dann der IF then Teil im Dokument angezeigt wird?!

Wenn man ein Ergebnis in ein Worddokument schreiben möchte, kann man das auf verschiedene Weisen machen. Man könnte ein Active-X-Steuerelement oder Formularfeld nehmen und dort das Ergebnis einer IF-Bedingung reinschreiben, man könnte eine Textmarke nehmen usw. Letztlich muss man nur irgendeinen Bereich (in VBA: „Range“) im Dokument definieren, wo man das Ergebnis dann platzieren möchte.

Als VBA-Code könnte das so aussehen:

Sub Obstauswahl()

    Dim strObst As String
    
    strObst = ActiveDocument.SelectContentControlsByTitle("Obst").Item(1).Range.Text
    
    With ActiveDocument.SelectContentControlsByTitle("Text").Item(1).Range
        If strObst = "A" Then
            .Text = "Apfel"
        ElseIf strObst = "B" Then
            .Text = "Banane"
        ElseIf strObst = "C" Then
            .Text = "Birne"
        Else
            MsgBox "Auswahl nicht vorhanden.", vbOKOnly + vbInformation, "Hinweis"
        End If
    End With
    
End Sub

Hier wird geprüft, ob im Dropdownfeld Obst das Item A, B oder C angewählt wurde, und dann im Formular(text)feld namens Text Apfel, Banane oder Birne reingeschrieben.

Wurde weder A noch B noch C ausgewählt, wird statt dessen die Hinweismeldung „Auswahl nicht vorhanden.“ angezeigt.

Würde man jetzt für die Textausgabe kein Textfeld-Steuerlement, sondern eine Textmarke namens Text nehmen, könnte das in VBA so aussehen:

Sub Obstauswahl()

    Dim strObst As String
    
    strObst = ActiveDocument.SelectContentControlsByTitle("Obst").Item(1).Range.Text

With ActiveDocument.Bookmarks("Text").Range
        If strObst = "A" Then
            .Text = "Apfel"
        ElseIf strObst = "B" Then
            .Text = "Banane"
        ElseIf strObst = "C" Then
            .Text = "Birne"
        Else
            MsgBox "Auswahl nicht vorhanden.", vbOKOnly + vbInformation, "Hinweis"
        End If
    End With

End Sub

Wenn du mir genau sagst, was du willst, kann ich dir den Code dafür möglicherweise schreiben und hier reinstellen.

Gruß, BerchGerch

PS: Manchmal – wie auch im obigen Beispiel – kann man anstatt einer IF-THEN-Anweisung eine SELECT-CASE-Anweisung nehmen. Wenn das geht, würde ich die Select-Case-Anweisung vorziehen, da diese schneller durchläuft als die If-Then-Anweisung.

Als Select-Case-Anweisung würde das obige erste Beispiel übrigens so aussehen:

Sub Obstauswahl ()

    Dim strObst As String
      
    strObst = ActiveDocument.SelectContentControlsByTitle("Obst").Item(1).Range.Text

    With ActiveDocument.SelectContentControlsByTitle("Text").Item(1).Range
        Select Case strObst
            Case "A"
               .Text = "Apfel"
            Case "B"
                .Text = "Banane"
            Case "C"
                .Text = "Birne"
            Case Else
                MsgBox "Auswahl nicht vorhanden.", vbOKOnly + vbInformation, "Hinweis"
        End Select
    End With

End Sub
Woher ich das weiß:eigene Erfahrung
Cathyleri 
Fragesteller
 02.11.2022, 20:12

Danke Dir erstmal. Habe dir eine private Nachricht dazu geschrieben :D

0