Gå til innhold

Word/Makro/VBA. Dytt i riktig rettning


Anbefalte innlegg

Hei jeg holder på å lage et skjema i Word. Har sett litt på dette med makroer og VBA. Men skjønner ikke så mye. Finner ikke noen bra sider på nettet heller. :(

 

Kan litt PHP og C++ men det er bare svært basis.

 

Det jeg har lyst å gjøre er at skjemaet i word er dynamisk på en måte. jeg tenker på at brukeren klikker på avkryssningsbokser (checkbox) og skjemaet endrer seg basert på om checkboxene er krysset av eller ikke.

 

F.eks:

checkbox1 []

checkbox2 []

checkbox3 []

 

Skjemadel 1: (Vises uansett)

 

Skjemadel 2: (If checkbox1 == true)

 

Skjemadel 3: (If checkbox2 == true)

 

Skjemadel 4: (If checkbox3 == true)

 

 

Hvordan kan jeg lage dette? Skal jeg lage en commandbutton under checkboxene og skrive skjemaet til word først når denne knappen er trykket på?

 

jeg har litt problemer med å lese hvilken statusen checkboxene har. Noe syntaksgreier jeg ikke forstår. Noen bra guider på dette eller er det bare en liten kodesnutt?

 

All hjelp mottas med et stort takk.

Lenke til kommentar
Videoannonse
Annonse

Dersom du lurer litt på den generelle syntaksen i Visual Basic, kan du jo alltids sjekke ut denne guiden. Det er neppe nødvendig å lese gjennom alt, særs ettersom den ikke er skrevet med VB i tankene, men den burde gi en aldri så liten innføring i syntaksen.

Lenke til kommentar

Det var en meget nytting link. tusen takk skal du ha.

 

Skulle gjerne ha laget ha laget noe funksjoner, men hvordan deklarer jeg dem?

 

Slik ser jeg for meg at det blir slik:

 

If CheckBox1.Value = True Then
     OpprettSkjemadel1
ElseIf
     SlettSkjemadel1
End If


If CheckBox2.Value = True Then
     OpprettSkjemadel2 
ElseIf
     SlettSkjemadel2
End If


If CheckBox3.Value = True Then
     OpprettSkjemadel3
ElseIf
     SlettSkjemadel3
End If

 

Er også usikker på hvordan funksjonene for Sletting skal se ut. Hvis brukeren ombestemmer seg ved valg av Sjekkboks. Blir så mye tull med hvilke skjemadeler som skal slettes osv. Tror kanskje det er bedre å lage en Resetknapp og bare opprette skjemaet på nytt?

 

Er dette en god løsning eller bør jeg gjøre det helt annerledes?

Lenke til kommentar

Til dette formålet hadde jeg utvilsomt benyttet såkalte side-seksjoner. Da kan du på en enkel og semantisk måte dele opp innholdet i dokumentet slik at du lettere kan gjemme og vise de rette elementene. Du legger inn seksjoner i et dokument ved å velge Insert - Break og Continuous. Seksjonene kan ses i Normal-modus som prikkete seperatorlinjer.

 

Etter dette kan du la sjekkboksene som skal fjerne og vise enkelte seksjoner av dokumentet være i den første seksjonen (ovenfor den første linjen), samt skjemadel 1, ettersom den skal vises kontinuerlig. Dernest legger du inn følgende kode i VBA:

 

Public Property Get SectionVisible(ByVal Index As Long) As Boolean

   ' Get the current value
   SectionVisible = Not ActiveDocument.Sections(Index).Range.Font.Hidden

End Property

Public Property Let SectionVisible(ByVal Index As Long, ByVal bValue As Boolean)

   ' Show or hide the section
   ActiveDocument.Sections(Index).Range.Font.Hidden = Not bValue

End Property

 

Nå kan du fjerne og vise seksjoner som du vil:

 

Private Sub chkSection1_Click()

   ' Vis seksjonen dersom sjekkboksen er markert. Vi begynner med seksjon 2, idet den første seksjon er opptatt av sjekkboksene.
   SectionVisible(2) = chkSection1.Value

End Sub

Private Sub chkSection2_Click()

   SectionVisible(3) = chkSection2.Value

End Sub

Private Sub chkSection3_Click()

   SectionVisible(4) = chkSection3.Value

End Sub

 

Husk nå endelig å gi sjekkboksene riktig navn (chkSection1 osv.) ved å endre (Name)-egenskapen i Properties. Denne får du opp ved å høyreklikke på kontrollene i dokumentet.

Seksjonert_skjema.doc

Lenke til kommentar

Du kan jo alltids legge bestillingskjemaet inn i en tekstboks, hvilket du eventuelt kan skjule ved å fjerne den omliggende linjen. Men dette fungerer dessverre ikke, av en eller annen grunn, i normal visningsmodus. Det funger dog ellers.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...