18. maj 2009 - 15:36Der 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.
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.
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.
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
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
Du kan først give mig points når jeg lægger et svar, det kommer her,
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.