Avatar billede jkandersen Nybegynder
18. maj 2009 - 15:36 Der er 9 kommentarer og
1 løsning

Excel VBA - opdater checkbox fra combobox sub i en UserForm

Jeg har et kæmpe stort excelark (2003), som jeg bruger til at lave nogle test specs ud fra.

Jeg har en UserForm med en masse checkbox'es hvor features kan vælges til/fra, derefter kan man køre en macro der genererer en spec kun med de features der er brug for.

Nu har jeg så i samme UserForm lavet en combobox hvor jeg har lavet en liste over nogle produkter.

Ideen er at man nemmere kan vælge et produkt uden at skulle kende til produktets features.

Så har jeg et andet sheet i samme ark hvor jeg har listet produkter og de features som hører til et produkt.

Når man så fra combobox ændrer noget - combobox_change() event, laver jeg noget kode der så kører produtets features igennem og vil så gerne have at hvis en feature er valgt (med "X" i en celle) skal den feature enables i checkbox i UserForm'en.

Jeg kan godt få den til at løbe produktets features igennem, men altså ikke aktivere en checkbox i combobox_change() sub'en - den bliver ikke 'hakket' af, som hvis man gjorde manuelt.

Håber meget at der er nogen der lige kan give mit et hint eller løsning på dette problem, da det vil gøre tingene meget lettere for personer der bruger dette system uden at kende til alle produkter/features.
Avatar billede excelent Ekspert
18. maj 2009 - 16:06 #1
CheckBox1 = True
Avatar billede jkandersen Nybegynder
18. maj 2009 - 16:19 #2
Det har jeg også prøvet - det virker desværre ikke.
Avatar billede jkandersen Nybegynder
18. maj 2009 - 16:26 #3
Jeg bruger en "Dim FeatureNavn" og tager giver FeatureNavn værdi af indholdet af celle B1-P1 i et loop, men når jeg så sætter FeatureNavn=True hedder FeatureNavn så True i stedt for at værdien af checkbox'en bliver true.
Avatar billede tjacob Juniormester
18. maj 2009 - 16:35 #4
måske CheckBox1.Value = True
eller CheckBox1.Value = 1
Avatar billede jkandersen Nybegynder
18. maj 2009 - 16:37 #5
Dem har jeg også prøvet - virker desværre ikke. Kan det have noget at gøre med hvordan min Dim'er FeatureNavn ?? Jeg har lige prøvet med "Dim FeatureNavn as checkbox", men så kan jeg ikke sætte FeatureNavn til værdien af B1.
Avatar billede jkandersen Nybegynder
18. maj 2009 - 16:57 #6
Her er den kode jeg sidder og roder med:

Sub DUTmodel_Change()
Dim DUTlinie, FeatureKolonne, FeatureNavn, FeatureSat, Addr, Res1, FeatureSub, sidstetegn
Dim FeatureNavnCB As CheckBox

modelDUT = DUTmodel.Text 'Get DUT name from list
Sheets("Auto-Configure products").Select 'Changes to sheet with all features
   
Range("A1").Select
ActiveCell.Columns("A:A").EntireColumn.Select 'selects column to search in
Selection.Find(What:=modelDUT, After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False, SearchFormat:=False).Activate
DUTlinie = ActiveCell.Row() 'finder linienummer for DUTname

Do While ActiveCell.Offset(-(DUTlinie - 1), 0) <> vbNullString 'kør denne indtil der ikke er flere features
    ActiveCell.Offset(0, 1).Select
    Addr = Selection.Address 'find bogstav for kolonne
    Res1 = InStr(2, Addr, "$", vbTextCompare)
    FeatureKolonne = Mid(Addr, 2, Res1 - 2)
    FeatureNavn = ActiveCell.Offset(-(DUTlinie - 1), 0) 'finder de features der skal sættes i x1 cellerne

    If ActiveCell = "X" Then
        FeatureNavn = True 'og hvis der er et X (aktivt) skal feature aktiveres
    Else
        FeatureNavn = False
    End If
       
Loop

End Sub
Avatar billede tjacob Juniormester
18. maj 2009 - 17:02 #7
Ja, jeg ser nu at dit problem simpelthen er at matche en CheckBox med et FeatureNavn.

Du kunne nummerere dine features, så de svarede til "numrene" på CheckBoxene:
F.eks. ved den feature der svarer til CheckBox5, giver du FeatureNavn String-værdien "CheckBox5"

Nu kan du så finde CheckBoxen således:  UserForm1.Controls(FeatureNavn).Value = True
Avatar billede tjacob Juniormester
18. maj 2009 - 17:06 #8
Nå, så ikke dit sidste inlæg, da jeg postede....

Men i linien:

FeatureNavn = ActiveCell.Offset(-(DUTlinie - 1), 0) 'finder de features der skal sættes i x1 cellerne

Skal du jo blot have fundet det tal der svarer til Checkboxens nummer.

Hvis FeatureNavn så er et tal kan du sætte CheckBoxen således:

UserForm1.Controls("CheckBox" & Cstr(FeatureNavn)).Value = True
Avatar billede jkandersen Nybegynder
18. maj 2009 - 17:12 #9
Hej tjacob - du er en skattebasse - du har lige løst mit problem!!

Jeg brugte bare:

UserFormF.Controls(CStr(FeatureNavn)).Value = True

Så er jeg fri for at lave alle mine features/checkbox'e om til noget med tal.

Du får de point jeg har lovet - skal bare lige finde ud af hvordan man gør (det er føste gang).
Avatar billede tjacob Juniormester
18. maj 2009 - 17:13 #10
Du kan først give mig points når jeg lægger et svar, det kommer her,
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
Kurser inden for grundlæggende programmering

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