08. december 2005 - 10:46Der er
14 kommentarer og 1 løsning
CheckBox i Excel (VBA)
Jeg har en UserForm med tre Checkboxe.
Når den er udfyldt trykker brugeren på en "Tilføj"-knap, og hvis den første er markeret skal der føres et 1-tal over i kolonne A, hvis den anden er markeret skal der føres et 1-tal over i kolonne B osv. (Hvis begge er markeret skal der både et 1-tal i kolonne A og B).
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det er lidt mere kompliceret; min "tilføj"-knap er programmeret til at tilføje det indtastede i den næste ledige række i mit regneark. Det vil sige, at ved første indtastning dannes en række med et 1-tal i eks. kolonne A og B, ved næste indtastning dannes en ny række med et 1-tal i kolonne B og C. Det vil sige, at der skal læses om den er krydset af eller ej, og er den det skal 1-tallet tages med over i den række som tilføjes, og så placeres i den rigtige kolonne.
Private Sub CommandButton1_Click() Dim Kode As String x = Range("A65536").End(xlUp).Row + 1 If CheckBox1 Then Kode = "1" Else Kode = "0" If CheckBox2 Then Kode = Kode & "1" Else Kode = Kode & "0" If CheckBox3 Then Kode = Kode & "1" Else Kode = Kode & "0" For i = 1 To 3 Cells(x, i) = Val(Mid(Kode, i, 1)) Next End Sub
Jeg skal forsøge at få det ind i denne kode som jeg har i forvejen -
Private Sub CommandButton2_Click() Dim wksData As Worksheet Dim ctl As Control Dim lRow As Long Dim Kode As String
Set wksData = Worksheets("Data") 'Finder næste ledige række i Data arket. lRow = wksData.Range("A65536").End(xlUp).Row + 1
'Tilføjer teksten i tekstbokse og kombinationsbokse til næste række ledige celler. With wksData .Cells(lRow, 1) = Me.TextBox2.Value .Range("B" & CStr(lRow)).Value = CDate(ComboBox4.Text) .Cells(lRow, 3) = Me.ComboBox1.Value .Cells(lRow, 4) = Me.ComboBox2.Value .Cells(lRow, 5) = Me.TextBox3.Value .Cells(lRow, 27) = Me.ComboBox3.Value End With
Unload Me UserForm3.Show
End Sub
Jeg forsøgte efter "With..." men fik den kun til at skrive "0", også der hvor den skulle tilføje "1".
Private Sub CommandButton2_Click() Dim wksData As Worksheet Dim ctl As Control Dim lRow As Long Dim Kode As String If CheckBox1 Then Kode = "1" Else Kode = "0" If CheckBox2 Then Kode = Kode & "1" Else Kode = Kode & "0" If CheckBox3 Then Kode = Kode & "1" Else Kode = Kode & "0"
Set wksData = Worksheets("Data") 'Finder næste ledige række i Data arket. lRow = wksData.Range("A65536").End(xlUp).Row + 1
'Tilføjer teksten i tekstbokse og kombinationsbokse til næste række ledige celler. With wksData
For i = 1 To 3 .Cells(lRow, i) = Val(Mid(Kode, i, 1)) Next
' NB, linierne herunder bruger jo også A +B + C kolonnerne ' du kan jo ikke få 2 værdier i de samme celler .Cells(lRow, 1) = Me.TextBox2.Value .Range("B" & CStr(lRow)).Value = CDate(ComboBox4.Text) .Cells(lRow, 3) = Me.ComboBox1.Value .Cells(lRow, 4) = Me.ComboBox2.Value .Cells(lRow, 5) = Me.TextBox3.Value .Cells(lRow, 27) = Me.ComboBox3.Value End With
...har lige prøvet; der kommer kun 0'er, også selv om checkboxene er vingede af¿¿¿
Men de kommer ind i de rigtige kolonner, altså 6 til 25. (havde lidt flere kolonner end de 3 jeg startede med at beskrive, men jeg prøvede at holde det simpelt :=)
I bruges også til at læse strengen (Kode), der er kun 3 tegn, så dem fanger du aldrig med For I = 6 to 25 det giver jo også 19, hvor mange CheckBox har du ????
Ok Fortsæt med at lave flere linier som disse, intil du ille har flere bokse
If CheckBox1 Then Kode = "1" Else Kode = "0" If CheckBox2 Then Kode = Kode & "1" Else Kode = Kode & "0" If CheckBox3 Then Kode = Kode & "1" Else Kode = Kode & "0" fortsæt her
Koden bliver så sådan
For I = 6 to 25 .Cells(lRow, i-5) = Val(Mid(Kode, i, 1)) Next
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.