Avatar billede hubertus Seniormester
14. februar 2008 - 14:24 Der er 24 kommentarer og
1 løsning

userform - med mulghed for en indbygget valgbar kalender

En kalenderudfordring.
Er det muligt i en userform, med en tekstbox, at kunne plukke en dato i en bagvedliggende kalender. Textboxen skal indeholde en dato, som enten skal indtastes eller prikkes ud på en kalender. Hvem kan hjælpe?
Avatar billede supertekst Ekspert
14. februar 2008 - 15:37 #1
Når du er i design-visning for Userformen - så prøv at se under TOOLS / Additional Controls..
Avatar billede hubertus Seniormester
14. februar 2008 - 16:22 #2
Ja det var noget i den stil. Jeg havde bare forestillet mig, at man kunne klikke i feltet og derefter få åbnet en kalender, som efter mine valg vil returnere en dato i feltet. Har du et forslag til, hvorledes man kan lave noget der ligner?
Avatar billede supertekst Ekspert
14. februar 2008 - 16:48 #3
Private Sub Calendar1_Click()
Dim dato As Date
    With Calendar1
        dato = CStr(.Day) + "-" + CStr(.Month) + "-" + CStr(.Year)
        Me.TextBox1 = CStr(dato)
    End With
End Sub
Avatar billede hubertus Seniormester
14. februar 2008 - 17:11 #4
Med din løsning skal jeg så ikke have både en tekstbox og en calender box? Caldender boxen returnere så en given dato til textboxen. Hvis der er sådan den skal forstås, kan det så lade sig gøre at datoen vælges i en anden form, som derefter returnere datoen til textboxen? Altså et skift fra den nuværende form til en ny, hvor datoen vælges.
Avatar billede supertekst Ekspert
14. februar 2008 - 18:55 #5
Sp.1 : Jo

Sp.2: Hvis kalendervalget f.eks. ligger i Userform2 & TextBox1 i Userform1:

"Kode i Userform2":

Private Sub Calendar1_Click()
Dim dato As Date
    With Calendar1
        dato = CStr(.Day) + "-" + CStr(.Month) + "-" + CStr(.Year)
        Userform1.TextBox1.Text = CStr(dato)
    End With

Rem Userform2 skal herefter lukkes/skjules for at Userform1 ses - eller denne skal vises.

End Sub
Avatar billede hubertus Seniormester
15. februar 2008 - 15:33 #6
Har du et bud på hvordan den samlede kode kunne se ud?
Jeg forestiller mig, at jeg med en commandbutton kunne aktivere userform2 vælge den ønskede dato, og med et tryk / dobbeltklik returnere til userform1. Jeg har prøvet, men kan ikke få userform1 skjult (og bevare øvrige indtastede data), mens userform2 er åben - har brug for hjælp hertil.
Avatar billede supertekst Ekspert
15. februar 2008 - 15:46 #7
Prøver at opbygge et eksempel - vender tilbage...
Avatar billede hubertus Seniormester
15. februar 2008 - 15:55 #8
Jeg har fået skiften mellem de to userforms til at virke. Har kun et lille problem tilbage. I userform2, hvor koden

Private Sub Calendar1_Click()
Dim dato As Date
    With Calendar1
        dato = CStr(.Day) + "-" + CStr(.Month) + "-" + CStr(.Year)
        Userform1.TextBox1.Text = CStr(dato)
    End With
End sub

er placeret virker den således at når datoen vælges, så springer den tilbage til userform1. Kan du ændre ovenstående kode således at der først returneres til userform1, når der dobbeltklikkes på datoen?
Avatar billede supertekst Ekspert
15. februar 2008 - 15:57 #9
Userform0: 2 tekstbokse (textbox1 til dato) - 1 knap

Private Sub CommandButton1_Click()          'KNAP ->Vis kalender i Userform1
    UserForm0.Hide
   
    Load UserForm1
    UserForm1.Show
End Sub

=====================

Userform1: Kalender objekt og 1 knap

Private Sub Calendar1_Click()
Dim dato As Date
    With Calendar1
        dato = CStr(.Day) + "-" + CStr(.Month) + "-" + CStr(.Year)
        UserForm0.TextBox1 = CStr(dato)  'dato overføres til TextBox1 i Userform0
    End With
End Sub
Private Sub CommandButton1_Click()          'luk
    Unload UserForm1
    UserForm0.Show
End Sub

------------------
Avatar billede hubertus Seniormester
15. februar 2008 - 16:36 #10
Der er et lille tilbageværende problem. Det ser ud som om, at userform0 initieres igen, når der returneres fra userform1. eks. jeg har nogle checkboxe, hvor en af dem er valgt som default. hvis jeg vælger en af de andre, og dernæst vælger en dato, så vil checkboxen være resat til default værdi, når der returneres fra userform1. Kan du klare den vil det være helt perfekt.
Avatar billede supertekst Ekspert
15. februar 2008 - 18:08 #11
Userform1:

Private Sub Calendar1_DblClick()    '<<<-------
Dim dato As Date
    With Calendar1
        dato = CStr(.Day) + "-" + CStr(.Month) + "-" + CStr(.Year)
        UserForm0.TextBox1 = CStr(dato)
    End With
   
    Unload UserForm1
    UserForm0.Show
End Sub
Avatar billede hubertus Seniormester
16. februar 2008 - 07:22 #12
userform1 virker helt perfekt, blot ser det ud som om, at de valg, der er foretaget før userform1 aktiveres resettes. f.eks. har jeg nogle checkboxe hvor brugeren har truffet nogle valg, disse valg er sat tilbage til defaultværdierne. Hvordan kan jeg undgå det?
Avatar billede internalerror Nybegynder
16. februar 2008 - 08:28 #13
Du kan også bruge

Microsoft Date and Timepicker Control

Den ligner en combobox og har en kalender indbygget.
Avatar billede bak Forsker
16. februar 2008 - 10:17 #14
internalerror -> det er jeg enig i. Det er den bedste, men den følger desværre ikke med MS Office som standard. Den er så vidt jeg husker med i VB6 og office developer
Avatar billede internalerror Nybegynder
16. februar 2008 - 10:49 #15
Hvis den ikke lige er til at finde blandt kontrollerne, kan den downloades her.

http://www.ascentive.com/support/new/support_dll.phtml?dllname=MSCOMCT2.OCX

Desværre har det den ulempe at alle brugere skal have den installeret.
Avatar billede supertekst Ekspert
16. februar 2008 - 12:02 #16
Userform0 er nu forsynet med 2 CheckBox & 2 OptionButtoms - disse indstillinger holdes efter valg af dato i Userform1 - se bemærk

Userform0:
Private Sub CommandButton1_Click()
    UserForm0.Hide        '<--- bemærk
   
    Load UserForm1
    UserForm1.Show
End Sub

Userform1:
Private Sub Calendar1_DblClick()
Dim dato As Date
    With Calendar1
        dato = CStr(.Day) + "-" + CStr(.Month) + "-" + CStr(.Year)
        UserForm0.TextBox1 = CStr(dato)
    End With
Avatar billede hubertus Seniormester
17. februar 2008 - 12:34 #17
- supertekst - er det ikke således at når suerform0.show kaldes i userform1, så afvikles Sub UserForm_Activate(). Hvis et er korrekt, så er det jo årsagen til at checkboxen sættes tilbage til default. Jeg bruger jo Userform_activate til at sætte defaultværdierne.

- bak og internalerror - kan I uddybe jeres indlæg?
Avatar billede hubertus Seniormester
17. februar 2008 - 12:35 #18
der skal selvfølglig stå userform0!!
Avatar billede supertekst Ekspert
17. februar 2008 - 12:53 #19
Prøv i stedet at sætte dine default-værdier iflg. nedenstående eksempel:
& nedlæg Userform_Activate.

Private Sub UserForm_Initialize()  '<------
    Me.TextBox2 = "Test"
    Me.CheckBox2 = True
    Me.OptionButton2 = True
End Sub
Avatar billede hubertus Seniormester
17. februar 2008 - 13:14 #20
-> supertekst - det gjorde en forskel. Hvad er forskellen på initialize og activate?
  Havde jeg ret i min kommentar 12:34?
Avatar billede bak Forsker
17. februar 2008 - 13:14 #21
Uddybningen....Hent DateTimePicker via internalerrors link og installer den

prøv så at åbne dette regneark
http://www.tbdl.dk/excel/datetimepicker.xls

her er DTpicker brugt både som komponent i arket og på en userform.
på userformen vil knappen Overfør sætte den valgte date i textboxen nedenunder samt i celle A2
Avatar billede bak Forsker
17. februar 2008 - 13:41 #22
alternativ prøv at hente denne zipfil
http://www.tbdl.dk/excel/dtpick.zip

udpak den og kør setup.exe.
Den vil nu installere mscomct2.ocx og excelarket datetimepicker.xls på een gang.
arket finder du under Alle Programmer / Datetimepicker /datetimepicker.xls
Avatar billede supertekst Ekspert
17. februar 2008 - 23:47 #23
Ja - Initialize udføres een gang, når Userformen loades 1. gang - Activate hver gang Userformen aktiveres.
Avatar billede hubertus Seniormester
18. februar 2008 - 11:32 #24
- supertekst - tak for hjælpen det var super og lærerrigt :-)

- Bak tak for dit info, den vil jeg gemme til en senere brug, men da det var supertekst løsning som jeg anvendte, så tilfalder mine point hans løsning - håber det er ok :=)
Avatar billede bak Forsker
18. februar 2008 - 11:35 #25
Det synes jeg er helt ok. Jeg ville bare gøre opmærksom på at der var andre kalenderobjekter. :-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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