12. oktober 2002 - 20:38Der er
20 kommentarer og 1 løsning
Optionbuttons - data til regneark
Jeg har en userform, hvor det antal minutter man taster ind overføres til næste ledige linie i kolonne A i et data-ark. (der kommer således flere og flere data...). I userformen er der 18 optionbuttons, og kun een af dem skal markeres. Der er et tilsvarende antal kolonner i data-arket, men kun den celle, hvor de indtastede minutter "hører til" - jævnfør valg af optionbutton - skal udfyldes med tiden fra kolonne A. Hvordan programmerer jeg min commandbutton i userformen til det ?
test denne makro. Den indsætter data fra textbox1 i den kolonne der svarer til OptionButton. Den er dog relativ nem at ændre. Skal kolonner flyttes til højre så øg cnt fra starten.
Private Sub CommandButton1_Click() Dim p As Control Dim Cnt As Integer Cnt = 0 For Each p In UserForm1.Controls If TypeName(p) = "OptionButton" Then Cnt = Cnt + 1 If p.Value = True Then Cells(65536, Cnt).End(xlUp).Offset(1, 0).Value = TextBox1.Value Exit For End If End If Next End Sub
Tag egenskaben på din OptionButton er et fint sted at sætte evt. kolonnenr. hvor A=1 eller selve kolonne bogstavet. Du kan så hente Tag egenskaben, når du skal finde cellen.
Dim ctl As Control For Each ctl In Me.Controls If TypeName(ctl) = "OptionButton" And ctl.Value Then ActiveSheet.Cells(ActiveCell.Row, ctl.Tag).Value = xxx 'ELLER (kolonnebogstav i tag egenskaben) ActiveSheet.Range(ctl.Tag & ActiveCell.Row).Value = xxx End If Next ctl
Hej igen. Mine evner rakte til at få mine optionbuttons til at indsætte værdien SAND i den rigtige celle, og FALSK i resten. Nu skal jeg så bare have SAND-værdien til at være lig med det antal minutter, som er indtastet i textbox 3, og som ligger i tredje celle i den aktuelle række ? Falsk-værdien skal være nul.
Mit udgangspunkt er den makro, som bak har skrevet ovenfor. Jeg har husket at ændre den til textbox3.value. Men der kommer ikke nogen information fra den markerede optionbutton med over i mit data-ark.
Hej Flemmindahl...Jeg forsøgte at maile det, men en mailrobot sendte det retur - surt show. Her er selve VBA-koden.
Private Sub CommandButton1_Click() 'Finder næste ledige række i Data-arket. Worksheets("Data").Activate C = 1 Do Until Worksheets("Data").Cells(C, 1) = "" C = C + 1 Loop
'Tilføjer teksten i tekstboxen til næste række ledige celler. Cells(C, 1) = UserForm1!TextBox1.Value Cells(C, 2) = UserForm1!TextBox2.Value Cells(C, 3) = UserForm1!TextBox3.Value
'(Her stod koden til alternativknappere... )
'Vender retur til inputmasken og nulstiller den. Worksheets("Inputmaske").Activate Unload Me UserForm1.Show
End Sub
Som det vil fremgå er jeg vel nærmest mongol til VBA - men jeg gør da et forsøg...
Joh, se: Textboxene sætter en værdi ind i kolonne a,b og c i et data ark. Box 1 sætter et navn i kolonne a, box to sætter en HT buslinie i kolonne b, og i box 3 skrives et antal minutter, som sættes i kolonne c. Hver alternativknap angiver en årsag til bussens forsinkelse, og det antal minutter der skrives i box 3 (kolonne c) skal overføres til den kolonne - og kun den - der har samme overskrift som alternativknappen. På denne måde håber jeg at kunne analysere, hvad der forsinker busserne, og hvornår.
Det, der tastes ind i de tre textbokse kan jeg godt få overført til mit data ark. Men jeg kan ikke få det antal minutter jeg taster ind til at lægge sig i den kolonne, som jeg vælger med alternativknappen...
Genialt... Jeg må vist hellere se at få læst lidt mere om den der tag egenskab - jeg anede ikke det var så nemt. Under alle omstændigheder var det en meget stor hjælp. Nu kan jeg komme videre med at få programmet til at præsentere data så andre også kan have glæde af det.
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.