Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
Du kan bare lave en UserForm. Der kan du prompte for alle de værdier du har brug for, indsætte default værdier, lave tjek på indtastede værdier, osv.....
Ja, for en time siden, men jeg kunne ikke lige få det til at virke.
I Office2000 (MS-VB) valgte jeg insert->userform. Det var let nok at designe den, men hvad gør jeg så? Hvordan aktiverer brugeren den fra regnearket (med en form-buttom f.eks.)?
1) Default-værdierne skal vel hentes i initialize-metoden - hvordan? 2) Hvordan afsluttes boxen, når man trykker på min buttom? 3) Kan man ikke skrive: cells("A1").value = inputbox(....) 'eller .text?
1) Når du skriver: Sub AutoOpen() DinForm.Show Din form vises End Sub
På selve formen kan du sætte en kode på eventen Open Her sætter du: DinForm.DitFelt1 = "Default1" DinForm.DitFelt2 = "Default2" osv.... Så vises formen med felter med værdier i
2)
DinForm.Close hvis formen skal lukkes og de indtastede værdier ikke længere skal bruges DinForm.Hide så lukkes formen ikke, men gemmes vist bare
hej Bjarke, prøv lige denne kode stump i excel og se hvad den foretager sig, det er ret simpelt, og der er ingen valideringer eller noget som helst, men når først du får fat i objekterne i vba så er det ganske hurtigt atlave noget brugbart. : Sub Test() Dim MinTekst As String Dim MitTal, AndetTal As Integer Dim BjarkesTal As Long MinTekst = InputBox("Intast dit navn")
MitTal = InputBox("Indtast et tal") 'prompt til bruger Ark1.Cells(1, 1) = MinTekst Ark1.Cells(2, 1) = MitTal AndetTal = InputBox("hvilket tak skal der beregnes med?") 'promt til brugeren Ark1.Cells(3, 1) = AndetTal Ark1.Cells(4, 1) = "når tallene " & MitTal & "og" & AndetTal & " lægges sammnen giver det" BjarkesTal = MitTal + AndetTal Ark1.Cells(5, 1) = BjarkesTal End Sub Dette er bare et hurtig demo af hva du leder efter Hilsen Simon
Jeg har mere eller mindre fundet ud af at lave det du har lavet her, men jeg kan godt se, at der er noget jeg kan lave lidt smartere ud fra det du har lavet.
Men som jeg skrev, så var pointen egentlig, at jeg gerne ville kunne prompte på det hele på én gang (det skal vel være i en userform?), så brugeren blot vælger de felter han ønsker at udfylde og så trykker ok (eller cancel).
Hvis du gider at lave en lille demo, så vil jeg også gerne dobble op med pointene, som jeg tilbød ziber (gælder alle). Demoen kunne være et lille regneark, som ikke laver noget som helst andet end det jeg skrev i spørgsmålet og så sende det til mig på d971230@student.dtu.dk.
Hej Bjarke :-) ja er det ikke lidt mortsomt. Jeg vil gerne prøve at lave en demo der kan promte for flere input på engang, jeg må sige at jeg nok er lidt stærkere i vb jeg har ikke lavet så meget i vba, men nu prøver vi.
Jeg har lavet: ------------------------------------------------- UserForm1 Label1 Label2 TextBox1 TextBox2
Og følgende koder: -------------------------------------------------Private Sub CommandButton1_Click() Cells(10, 10) = TextBox1.Text Cells(11, 10) = TextBox2.Text UserForm1.Hide End Sub Private Sub UserForm_Initialize() UserForm1.TextBox1.Text = Cells(1, 3) UserForm1.TextBox2.Text = Cells(3, 3) End Sub
Og følgende makro: ------------------------------------------------- Sub BrugerForm() Load UserForm1 UserForm1.Show Cells(1, 1).Select End Sub
Hvis det bare er det, så kunne I da hurtigt have lavet det hva'(?) Anyway, nu må I oppe jer lidt, hvis ikke vi alle 3 skal dele pointene;-) Nå, men jeg hører da gerne gode råd.....
Bjarke >> når du vil gemme din form i excel efter brug, kan du "vist nok" bruge udtrykket "unload me" når du bruger hide vil formen hele tiden optage plads i memory indtil du lukker dit regneark, ikke fordi det hasr den store indflydelse, men det er jo rart nok at vide.
jeg tror ikke rigtig jeg har forstået hva du mener, jeg synes din kode ser ok ud. VBA udskiller sig fra Visual Basic ved at være script sproget i Office pakken, syntaxen er fuldstændig den samme som i VB men har ikke helt de samme muligheder, VBA betyder "Visual basic for Applicationes" I rent visual basic kan du programmere dll filer ActiceX controller og almindelige exefiler. Jeg har netop prøvet at programmere en extivex i vc++ og så brugt denne i et vb program foretil dig mulighederne! Altså en stor funktionalitet er det ikke det man kalder Rapid Development :-) Hilsen Simon. hmmmmm bliver snart nød til at oprette et spørgsmål i c++ *S*
Tak Simon, jeg må snart få set på det, men jeg har også andet at lave:-)
Rapid - jo, forestil dig at lave det i C++ !!!!
Jo, det er skam godt at vide med unload me, men den eneste måde jeg kunne få formen til at lukke (forsvinde) på var at gøre det på den måde. Kan knappen unloade formen? (Din form kan jo også kun lukkes vha x i øverste højre hjørne).
Iøvrigt tror jeg ikke, at jeg får alle mails fra eksperten. Det er lidt irriterende at kommentere, uden at vide at andre har kommenteret i mellemtiden (jeg kunne selvfølgelig bare reloade inden hver gang, men det tænker jeg ikke altid lige på).
PS: Ja stil endelig snart et spørgsmål - det er sjovere at lege smart end at sidde her og fjumre rundt med noget jeg ikke rigtig har check på;-)
simon >> smider du så ikke også lige en knap på, så jeg ikke SKAL gå ind i VB-editoren? Husk nu, at hvis felterne i regnearket er udfyldt, så skal værdierne stå som default-værdier i formen:-)
hmm har lige prøvet det og det virker, hvis du placere en kommando knap på din udserform og f.eks kalder den CmdExit så skal du bare indsætte unload me i kode vinduet så virker det, det ville det altså også i en sub routine eller i en funktion, unmload me lukker bvare det aktive objekt
Tak for hjælpen simon. Det virker fint, så det kan jeg vidst godt finde ud af at arbejde videre med.
Jeg opretter lige et nyt spørgsmål, som du bare kan svare på, så du får doblet op som jeg lovede;-)
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.