21. august 2001 - 14:07Der 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.
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.
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!
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?
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.
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!
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.
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...
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.
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.
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
Hej med jer! Tak for hjælpen! Jeg har fået det til at fungere!
Synes godt om
Ny brugerNybegynder
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.