[WORD/VBA] Checkbox -> show tabellen

Pagina: 1
Acties:
  • 125 views sinds 30-01-2008
  • Reageer

  • snrg_Paco
  • Registratie: Januari 2002
  • Laatst online: 02-08-2023
Daaag allen,

Klein vraagje. Ik wil een document maken met daarin zes checkboxen. Als iemand een van de checkboxen aanklikt dan moet er een tabel verschijnen. Iedere checkbox heeft zijn eigen tabel. Dus als er meerdere checkboxen aangeklikt worden dan komen er meerdere tabellen te voor schijn.

Heeft iemand een idee hoe ik dit in Word zou kunnen oplossen?

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 26-07 16:53

Dido

heforshe

Het probleem lijkt hem te zitten in het benaderen van die tabellen als objecten, zo te zien. Ik zie geen simpele manier om een tabel.visible = true / false te zetten.
Misschien als je de tabellen als externe objecten (excel?) definieert?

Wat betekent mijn avatar?


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Titlefix: [vbs]checkbox -> show tabellen >> [WORD/VBA] Checkbox -> show tabellen

Word gebruikt VBA (Visual Basic for Applications) en geen VBS ;)

En verder hoort dit in OFF en niet in PRG: Waar hoort mijn topic? ;)

[ Voor 32% gewijzigd door RobIII op 19-10-2006 17:21 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

snrg_Paco schreef op donderdag 19 oktober 2006 @ 17:04:
Daaag allen,

Klein vraagje. Ik wil een document maken met daarin zes checkboxen. Als iemand een van de checkboxen aanklikt dan moet er een tabel verschijnen. Iedere checkbox heeft zijn eigen tabel. Dus als er meerdere checkboxen aangeklikt worden dan komen er meerdere tabellen te voor schijn.

Heeft iemand een idee hoe ik dit in Word zou kunnen oplossen?
Ik weet natuurlijk niet precies wat je eisen zijn.
Wat je zou kunnen doen, is de table laten maken door VBA op het moment dat de checkbox wordt aangevinkt.
De code zou er dan (ongeveer) zo uit kunnen zien...
Het is een aanloopje, je zult het zelf af moeten maken;
Visual Basic: test_GoT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub CheckBox1_Click()
    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=10, NumColumns _
        :=5, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
    With Selection.Tables(1)
        If .Style <> "Table Grid" Then
            .Style = "Table Grid"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = True
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = True
    End With
End Sub
Private Sub CheckBox2_Click()
    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=10, NumColumns _
        :=5, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
    With Selection.Tables(2)
        If .Style <> "Table Grid" Then
            .Style = "Table Grid"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = True
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = True
    End With
End Sub

Enzovoorts, enzovoorts...

Ook de tabellen vullen met tekst, en formatten moet lukken met VBA.

Succes!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je kan de tabellen wel klein maken en dezelfde kleur geven als de achtergrond:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Option Explicit

Const NormalSize As Integer = 12
Const NormalColor As Long = wdColorBlack

Const HiddenSize As Integer = 1
Const HiddenColor As Long = wdColorWhite

Sub UpdateTableLayout(t As Table, s As Integer, c As Long)
    With t
        With .Range.Font
            .Color = c
            .Size = s
        End With
        
        With .Borders
            .InsideColor = c
            .OutsideColor = c
        End With
    End With
End Sub

Sub ShowTable(t As Table)
    UpdateTableLayout t, NormalSize, NormalColor
End Sub

Sub HideTable(t As Table)
    UpdateTableLayout t, HiddenSize, HiddenColor
End Sub

Private Sub CheckBox1_Change()
    If CheckBox1.Value Then
        ShowTable Tables(1)
    Else
        HideTable Tables(1)
    End If
End Sub

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Een tabel heeft geen visible attribuut, maar het font wat in de tabel gebruikt wordt kun je wel het attribuut hidden meegeven, met hetzelfde effect. :) Of, imho een fraaiere oplosing: je stopt je tabel in een tekstvak en zet van het tekstvak het attribuut visible op false.


code:
1
2
3
ActiveDocument.Tables(1).Range.Font.Hidden = OnOff
of
ActiveDocument.Shapes(1).Visible = OnOff

[ Voor 10% gewijzigd door Lustucru op 20-10-2006 13:43 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Niesje schreef op vrijdag 20 oktober 2006 @ 13:34:
Een tabel heeft geen visible attribuut, maar het font wat in de tabel gebruikt wordt kun je wel het attribuut hidden meegeven, met hetzelfde effect. :) Of, imho een fraaiere oplosing: je stopt je tabel in een tekstvak en zet van het tekstvak het attribuut visible op false.


code:
1
2
3
ActiveDocument.Tables(1).Range.Font.Hidden = OnOff
of
ActiveDocument.Shapes(1).Visible = OnOff
Da's denk ik wel de mooiste oplosing ( ;-) ) jah......
FF serieus, dat meen ik natuurlijk!

  • snrg_Paco
  • Registratie: Januari 2002
  • Laatst online: 02-08-2023
Hier ben ik ontzettend mee geholpen en het werkt ook zeer goed.
Het probleem is alleen het volgende:
stel tabel 1 is 4 kantjes en tabel 2 is 2 kantjes en checkbox 2 is alleen aangevinkt dan krijg je tabel 2 op pagina 4 pas te zien.

Is er misschien een handige manier om dat op te schuiven naar boven?

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Geen pagebreaks (Ctrl+Enter) gebruiken en bij de TextBox: Format Text Box ... -> Layout -> Advanced... -> Vertical -> Alignment [..] relative to [..].
Pagina: 1