14. februar 2008 - 14:24Der 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?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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?
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
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.
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.
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.
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?
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
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.
Private Sub Calendar1_DblClick() '<<<------- Dim dato As Date With Calendar1 dato = CStr(.Day) + "-" + CStr(.Month) + "-" + CStr(.Year) UserForm0.TextBox1 = CStr(dato) End With
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?
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
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
- 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?
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
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
- 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 :=)
Det synes jeg er helt ok. Jeg ville bare gøre opmærksom på at der var andre kalenderobjekter. :-)
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.