Avatar billede dob Nybegynder
21. august 2001 - 14:07 Der er 12 kommentarer og
1 løsning

Checkbox

Jeg har et dokument med nogle bookmarks - bl.a. for at insætte logo og adresse fra autotexter.
Da vi arbejder med dokumenter både med og uden logo/adresse, har jeg lavet en checkbox:

LOGO/ADDRESS: (boxen skal været markeret) YES

Jeg vil gerne have denne checkbox med YES som Default, d.v.s., at vil jeg ikke have logo/adresse, skal jeg slette markering.

Er der en \"kvik\" hoved der kan hjælpe mig?

PS: Ja... jeg er nybegynder i VBA!

Tak
Avatar billede koldstar Nybegynder
21. august 2001 - 21:02 #1
hvis jeg forstår dit spørgsmål rigtgt er det bare at trykke på checkboxen og derefter på value under properties. der kan du vælge om den skal være markeret ellert ej.
Avatar billede dob Nybegynder
22. august 2001 - 08:15 #2
Tak for dit svar Koldstar!
Desværre, kan jeg ikke få det til at fungere.

Jeg har sat texbox\'en, hvis Caption er YES, til Value=True. Det lille vindue er markeret. Så lang så godt.

Men derefter, hver gang jeg afprøver skabelonen, uanset om box\'en er afkrydset eller ej, får jeg ikke logo/adresse autotexter i mit dokument.

Jeg har også prøvet at bytte om på macroen\'s rækkefølge, men uden held.

Her er makroen - måske har jeg overset en finesse:


Private Sub CheckBox2_click()

If CheckBox2.Value = True Then
 
  ActiveDocument.ActiveWindow.View.Type = wdPrintView
  ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
 
  ActiveDocument.Bookmarks(\"logo\").Select
  NormalTemplate.AutoTextEntries(\"logo\").Insert _
  where:=Selection.Range
 
  ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
 
  ActiveDocument.Bookmarks(\"adresse\").Select
  NormalTemplate.AutoTextEntries(\"adresse\").Insert _
  where:=Selection.Range
   
  ActiveDocument.Bookmarks(\"adresse1\").Select
  NormalTemplate.AutoTextEntries(\"adresse\").Insert _
  where:=Selection.Range
 
Else
 
    CheckBox2.Value = False
 
  ActiveDocument.ActiveWindow.View.Type = wdPrintView
  ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
 
  ActiveDocument.Bookmarks(\"logo\").Delete
 
  ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
 
  ActiveDocument.Bookmarks(\"adresse\").Delete
  ActiveDocument.Bookmarks(\"adresse1\").Delete
 
   
End If
End Sub

Avatar billede lrp Nybegynder
22. august 2001 - 12:48 #3
Nej, den kode du har vist, virker ikke. Problemet er, at din kode KUN eksekveres hvis du klikker på checkboxen (fordi proceduren hedder CheckBox2_Click). Hvis checkboxens værdi som default er sat til true (afkrydset), og du klikker på den, så bliver den false (ikke afkrydset). Da der jo hermed er klikket på checkboxen burde dette virke efter hensigten. Hvis du derimod vil beholde din defaultindstilling (true), klikker du formodentlig IKKE på checkboxen (da dette jo ville fjerne afkrydsningen), og koden udføres derfor ikke. Jeg vil derfor mene, at hvis du først fjerner krydset i checkboxen og derefter sætter det igen, så vil logo/adresse også komme med. Løsningen på problemet er at flytte koden væk fra CheckBox2_Click og fx. over i en knap, som man klikker på, efter at man har foretaget sine valg. På den måde undgår du, at du er nødt til at klikke mindst én gang på checkboxen for at den kode, der er tilknyttet den, udføres. Håber, at dette er nogenlunde forståeligt, ellers spørg endelig!
Avatar billede dob Nybegynder
22. august 2001 - 15:57 #4
Tak for dit svar.
Det tog lidt tid, men jeg har (endelig) forstået hvad du mener.
Jeg har ændret procedure til _Change(). Det fungerer nu. Men det eneste jeg ikke bryde mig om er at knappen skal aktiveres uanset om man vil have logo/adresse med eller ikke.
Det jeg gerne vil er YES (logo/adresse i dok.) som DEFAULT.
Har du en løsning?
Avatar billede lrp Nybegynder
22. august 2001 - 16:49 #5
Tak for points. Jeg har ud fra at du har din checkbox i en userform. Hvis du ikke allerede har en procedure der hedder Userform_initialize, kan du lave sådan en. Den køres når userform\'en åbnes, hvilket er meget nyttigt, når man gerne vil sætte nogle default-værdier.

Private Sub Userform_initialize
  CheckBox2.Value = True
End sub

Koden sætter altså checkboxen til at være true (afkrydset), når userformen åbnes. Jeg tror, det burde løse problemet.
Avatar billede dob Nybegynder
23. august 2001 - 09:41 #6
Tak for dit svar lrp. Men desværre.....
Jeg har godt nok en Userform_initialize allerede.
Der har jeg defineret en combobox til at vælge sprog. Vi arbejder jo med 4 sprog (GB, D, DK, F). Der er åbenbart ikke noget at gøre. Man SKAL vælge
YES eller NO. Det er bare ikke særlig brugervenligt, når den dokumenter skal for det mest være med logo/adresse.
Til din orientering er LOGO placeret i en Header, som jeg kalder frem (også under NO-knappen)og lukker. Adresse + Adresse1 (to forskellige steder) er placeret i selve dokumentet.
Dokumentet består af 3 dele:
1)fax til agenten (logo + adresse).
2)brev til kunden (logo + adresse1).
3)selve tilbuddet (kun logo).
PS: Undskyld stavefejlene, men selv om jeg har boet i landet i 30 år, så har jeg stadig en fransk baggrund!
Avatar billede lrp Nybegynder
23. august 2001 - 11:05 #7
Nu kommer jeg i tvivl: Har du kun én checkbox (der enten er afkrydset eller ikke afkrydset), eller har du to (hvor den ene så har teksten YES og den anden har teksten NO)?
Jeg undrer mig også lidt over, at du har ændret din CheckBox2_Click til CheckBox2_Change. Jeg går ud fra, at du har en OK-knap eller lignende, som man klikker på, når man har foretaget sine valg. Det ville nok være mere logisk at placere koden her, så den ikke kører hver gang der sker en ændring i CheckBox2, men først når man er færdig med at vælge.
Avatar billede dob Nybegynder
23. august 2001 - 11:20 #8
Og du siger du er i tvivl!!!
Jeg har prøvet begge muligheder:
1. To knapper: YES og NO
2. Een knap: NO
Den version der fungerer nu er den med 2 knapper: D.v.s. at der SKAL vælges.
Det optimale vil være kun 1 NO-knap, da vi bruger Logo/adresse i de fleste filfalde.
Procedure_Click eller _Change eller ?? Man skal jo prøve noget nyt når det ikke fungerer.
Vil du have macroen - med 1 NO-knap? Den er temmelig stor. Men du har jo ikke den samme Normal.dot som jeg...
Avatar billede lrp Nybegynder
23. august 2001 - 11:46 #9
Jeg synes umiddelbart ikke at løsningen med to checkboxe er særlig god, fordi det jo ikke bør være muligt at afkrydse begge to samtidig (både YES og NO).
Måske er det lettest, at du sender det til min e-mail: brevkassen@hotmail.com - så vil jeg kigge nærmere på det.
Avatar billede lrp Nybegynder
23. august 2001 - 17:33 #10
Jeg har kigget på den fil, du har sendt til mig. Da makroen er ret stor, er det nok bedst at du selv foretager rettelserne, da det ellers kan blive lidt overskueligt, hvad der er rettet. Jeg vil derfor komme med mit forslag til, hvad du kan ændre:
Jeg kan se, at du ikke har nogen CheckBox (som jeg hele tiden har troet), men at at du i stedet for bruger en alm. CommandButton til at vælge NO til Logo/adresse. Jeg anbefaler at du udskifter den med en checkbox (altså et lille firkantet felt, hvor man kan sætte et kryds). Hvis du kalder checkboxen for \"CheckBox1\" kan du så i UserForm_activate tilføje: CheckBox1.Value = True.
Så vil den altid være krydset af som default.
Bagefter bør du flytte den del af koden, der er placeret i NO_Click over i OK_Click. Du skal teste på, om CheckBox1 er true (afkrydset) eller false (ikke afkrydset). Et eksempel på, hvordan det gøres:
If CheckBox1.Value = True then
  \'her skriver du det, der skal ske, hvis
  \'CheckBox1 er afkrydset
else
  \'her skriver du det, der skal ske, hvis
  \'CheckBox1 IKKE er afkrydset
End if

Prøv at lave det, som jeg lige har beskrevet, og se, om det kan bruges.

Med hensyn til, hvordan du kan skjule nogle af de nederste indtastningsfelter, så kan du evt. sætte Visible = False. Altså for eksempel: writermail1tx.Visible = False. Så bliver de usynlige. Men selve userformen bliver dog ikke mindre. Måske kan du i stedet for prøve at flytte lidt rundt på nogle af indtastningsfelterne nederst i userformen - der er lidt plads til overs i højre side.
Jeg håber at du kan få det til at virke - ellers så skriv igen, og forklar gerne, hvad du har prøvet at ændre og hvad der ikke virker.
Avatar billede cellaneous Nybegynder
14. september 2001 - 03:18 #11
hvis du bruger checkbokse, så kig på det her eksempel

(jeg har bare lavet en msgbox i sub\'erne som eksempel, skriv koden istedetfor)

Private Sub Check1_Click()
    Select Case Check1.Value
    Case 1
        medlogo
    Case Else
        udenlogo
    End Select
End Sub

Private Sub Form_Load()
    Call Check1_Click \' jeg regner med du har sat Value = 1 i properties i design-time
End Sub

Private Sub medlogo()
    MsgBox \"med logo\" \' skriv koden istedetfor :-)
End Sub

Private Sub udenlogo()
    MsgBox \"uden logo\" \' skriv koden istedetfor :-
End Sub

PS!
istedetfor \"Call Check1_Click\" kan du direkte skrive navnet på sub\'en (her navngivet \"medlogo\") i form_load - det ser pænere ud tror jeg min lærer ville have argumenteret

angående ikke at ønske sig to checkbokse (fordi man kan afkrydse dem begge) - overvej optionbutton (radiobuttons) istedet, her kan kun en af dem have \"value = true\" ad gangen
Avatar billede cellaneous Nybegynder
14. september 2001 - 03:19 #12
ups, så ikke det var vba - men måske kan du alligevel bruge det til noget :-) ellers bare ignorer mig!
Avatar billede dob Nybegynder
14. september 2001 - 13:09 #13
Hej med jer!
Tak for hjælpen!
Jeg har fået det til at fungere!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester