Ich benutze VBA in Word, um ein SmartForm zu erstellen, wo der Benutzer ein Kontrollkästchen aktivieren kann, um bestimmte Informationen anzuzeigen, die ich mit einem Lesezeichen versehen habe das Namensformat „TEXT_BUTANE“ActiveX Checkbox ruft Sub auf, um alle Lesezeichen durchzuschleifen und bedingte Aktionen auszuführen (für bestimmte Gruppen)
Da jedes Produkt (Butan/Propan/ETHANE) mehrere Lesezeichen in dem Dokument haben will ich sie „TEXT_BUTANE1“ „TEXT_BUTANE2“ etc
Also würde ich dann wie ich Namensgebung zu Schleife durch alle Lesezeichen und Ausblenden/Anzeigen von Abschnitten im Dokument, abhängig davon, zu welcher Gruppe es gehört, dh alle Lesezeichen, die mit "TEXT_BUT" beginnen, würden als eine Gruppe betrachtet, die kollektiv ausgeblendet wäre (oder s hown wenn aktiviert)
ich einen Compiler-Fehler bekommen „Weiter ohne For“ aber von dem, was ich die Syntax sehen richtig ist
Es funktionierte vor dem LoopThroughBookmarks Sub erstellen, aber ich brauche so etwas wie dies so ich kann/zeigen verbergen mehrere Abschnitte des Dokuments
Jede Hilfe sehr geschätzt werden würde
Private Sub CHECK_BUTANE_Click()
Dim vw As Word.View
Dim bChecked As Boolean
Dim bkm As Word.Bookmark
'turned on non-printing characters individually so that
'not displaying Hidden text does not affect these settings.
Set vw = Application.ActiveWindow.View
If vw.ShowAll = True Then 'if TRUE then SHOW following
vw.ShowParagraphs = True
vw.ShowObjectAnchors = True
vw.ShowTabs = True
vw.ShowHyphens = True
vw.ShowOptionalBreaks = True
vw.ShowSpaces = True
End If
vw.ShowAll = False 'if FALSE then HIDE following
vw.ShowHiddenText = False
bChecked = Me.CHECK_BUTANE.Value
'if CHECKED
If bChecked Then
Call LoopThroughBookmarks("BUT", True) 'then TRUE so loop through bookmarks passing PRODUCT
Else
Call LoopThroughBookmarks("BUT", False) 'then FALSE so loop through bookmarks passing PRODUCT
End If
End Sub
Public Sub LoopThroughBookmarks(product As String, bChecked As Boolean)
Dim bkm As Bookmark
Dim strMarks() As String
Dim intCount As Integer
Dim checkString As String
Dim bkmName As String
checkString = "CHECK_" + product 'CHECK_BUT or CHECK_PRO or CHECK_MET
If ActiveDocument.Bookmarks.Count > 0 Then
ReDim strMarks(ActiveDocument.Bookmarks.Count - 1)
intCount = 0
For Each bkm In ActiveDocument.Bookmarks 'Set bkm to be current Bookmark
bkmName = Left$(bkm.Name, 9) 'taking first 9 chars for bkm comparison
If bkmName = checkString Then 'if TRUE
bkm.Range.Font.Hidden = Not bChecked 'then hidden is false
Else 'is FALSE
bkm.Range.Font.Hidden = bChecked 'so stay visibility
Next bkm
End If
End Sub
Hallo @Cindy Meister vereinfachen ich wirklich zu schätzen Deine vorherige Antwort, die mich dazu gebracht hat! Jetzt frage ich mich nur, ob Sie in der Lage sind, mit dieser Revision zu helfen, mehrere Abschnitte anzuzeigen/auszublenden? :-) –