Checkbox met Macro

  • Onderwerp starter Onderwerp starter T-O
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

T-O

Gebruiker
Lid geworden
14 nov 2005
Berichten
14
In een word document heb ik verschillende checkboxes staan uit de werkset besturingselementen. Wanneer een checkbox aangevinkt word moet hij een deel van het document verbergen.

Code:
Private Sub CheckBox1_Change()
Call ShowHideBookmark1
End Sub

Sub ShowHideBookmark(x)
Dim orange As Range
Set orange = ActiveDocument.Bookmarks("CheckBox1").Range

If CheckBox1 = True Then
   With orange.Font
      .Hidden = True
   End With
   With ActiveWindow.View
      .ShowHiddenText = False
      .ShowAll = False
   End With
Else
   With orange.Font
      .Hidden = False
   End With
   With ActiveWindow.View
      .ShowHiddenText = True
      .ShowAll = False
   End With
End If
End Sub

Nu wil ik graag ook een mogelijkheid om bij een variabele gebruiken mbt de checkbox zodat ik niet voor elke checkbox een aparte functie hoef te schrijven.' et orange = ActiveDocument.Bookmarks("Checkbox" & x).Range' werkt maar bij de 'If CheckBox1 = True Then' statement krijg ik het niet voor elkaar.

Als dat werkt komen er aardig wat checkboxjes in het document, misschien zou dan het aanroepen van de functie showhidebookmark() ook wat beter kunnen, wellicht door een deel van de naam van de checkbox te gebruiken als teller (de checkboxen heten toch checkbox1 t/m checkbox99.
 
Dit is voldoende

Code:
Private Sub CheckBox1_Change()
  ShowHideBookmark  checkbox1.name,checkbox1.value
End Sub

Private Sub CheckBox2_Change()
  ShowHideBookmark  checkbox2.name,checkbox2.value
End Sub

Private Sub CheckBox3_Change()
  ShowHideBookmark  checkbox3.name,checkbox3.value
End Sub

Sub ShowHideBookmark(c0,c1)
  ActiveDocument.Bookmarks(c0).font.hidden= c1
End Sub
 
Kun je de checkbox change events niet allemaal naar dezelfde functie leiden als in VB.NET?
Dan kun je het parameter 'sender' casten naar een checkbox en deze meegeven aan
de functie Sub ShowHideBookmark(c0,c1)
 
@jabber - was dat een vraag aan mij, want ik heb geen idee hoe dat te doen, maar denk wel dat het handig is.

Nu is de functie aanzienlijk korter en hij werkt goed, alleen moet ik nu nog wel voor elke checkbox de code herhalen.
Code:
Private Sub CheckBox1_Change()
ShowHideBookmark1 CheckBox1.Name, CheckBox1.Value
End Sub
kan hier nog verbetering aangebracht worden?
 
Laatst bewerkt:
code foutje, .font moet .range.font zijn
:
Code:
Sub ShowHideBookmark(c0,c1)
  ActiveDocument.Bookmarks(c0).[B]range.[/B]font.hidden= c1
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan