2016-05-03 60 views
0

我有一個問題,我試圖搜索互聯網很多,但沒有找到一個解決方案來幫助我。dropdownmenu自動檢查複選框

繼承人我的問題: 我在單元格J3中的工作表3中有一個下拉菜單(在vba中稱爲ws_step3)。 下拉菜單中有9個選項,其中這些選項2自動應使一個複選框(讓我們稱之爲複選框「的CoffeeCup」)

的9個選項A,B,C等

進出口尋找一個VBA代碼,如果選項2進行檢查,可自動檢測該複選框(可以說其C和F,檢查該複選框)使用Active X複選框,並使用下拉菜單

希望有人能幫助我

林。

TY在從VBA新人提前:-)
/克勞斯

編輯#1 - 嘗試這個第一

Private Sub Worksheet_Calculate() 
    If ws_Step3.Range("J3").Value = "C" Then 
    ws_Step3.CheckBoxes("Coffeecup").Value = xlOn 
    Else 
    ws_Step3.CheckBoxes("Coffeecup").Value = xlOff 
    End If 
End Sub 

編輯#2 - 感謝DDuffy幫助在這一個 - 我已經有這個在我的私人小組Worksheet_Change(BYVAL目標作爲範圍)J3

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Address = "$J$3" Then 
    'Hvis værdien hedder "fremført cykelsti": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(2, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(3, 2).Value 
End If 

    'Hvis værdien hedder "Afkortet cykelsti": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(13, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(14, 2).Value 
End If 

    'Hvis værdien hedder "Venstresving fra langsiden af T-kryds": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(17, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(18, 2).Value 
End If 

    'Hvis værdien hedder "Cykelbane": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(21, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(22, 2).Value 
End If 

    'Hvis værdien hedder "Ingen cykelfaciliteter": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(27, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(28, 2).Value 
End If 

    'Hvis værdien hedder "Højresvingsshunt": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(31, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(32, 2).Value 
End If 

    'Hvis værdien hedder "Hollænderboks": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(42, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(43, 2).Value 
End If 

    'Hvis værdien hedder "Cykelsti i eget trace": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(46, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(47, 2).Value 
End If 

    'Hvis værdien hedder "Tilladt højresving for rødt": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(57, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(58, 2).Value 
    End If 

End If 

End Sub 

而且DDuffys建議合作這裏MES(改成了真正的問題,沒有更多的旁敲側擊)

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Cells.Count > 1 Then Exit Sub 
Application.EnableEvents = False 

On Error GoTo Errortrap 


'~~> Change it to the relevant string with which you want to compare 
StringToCheck1 = "Hoejresvingsshunt" 
StringToCheck2 = "Tilladt Hoejresving for roedt" 


If Not Intersect(Target, Range("J3")) Is Nothing Then 
    '~~> Check for the cell value 
    If Target.Value = StringToCheck1 Then 
    'change checkbox value to true if it matches 
    Worksheets("ws_Step3").HoejreD.Value = True 
    ElseIf Target.Value = StringToCheck2 Then 
    'change checkbox value to true if it matches 
    Worksheets("ws_Step3").HoejreD.Value = True 
    Else 
    'change checkbox value to false if it doesn't match 
    Worksheets("ws_Step3").HoejreD.Value = False 
    End If 
End If 

LetsContinue: 
    Application.EnableEvents = True 
    Exit Sub 
Errortrap: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 

我的問題是,現在,我要如何合併這些到工作表的變化?

我有我的工作在這裏的形象:http://imgur.com/D4NXDI8

+0

到目前爲止您嘗試過什麼?嘗試是有趣的部分。你想要考慮你的僞代碼,然後儘可能地將它翻譯成VBA。所以你會想要一些東西:如果ws_steps.Text等於「C」和「F」,那麼CheckBoxName.Value等於true。嘗試將其轉換爲VBA並向我們展示您擁有的內容。這裏的人不傾向於爲你做你的工作,但如果你陷入困境,有很多人會幫助你。 – DDuffy

+0

忘記提及,如果您選擇了C/F選項並想從下拉菜單中重新選擇任何選項A或B,則應該再次取消選中該複選框,但僅適用於選項A或B,其餘選項應保持選中狀態它已經從挑選C/F中選擇。 – Klaus

+0

嘗試這樣做:。 私人小組Worksheet_Calculate() 如果ws_Step3.Range( 「J3」)值= 「C」。然後 ws_Step3.CheckBoxes( 「的CoffeeCup」)值= xlOn 否則 ws_Step3.CheckBoxes( 「的CoffeeCup」 ).Value = xlOff End If End Sub – Klaus

回答

0

信貸 Marc L的提問給了積木這一點。

這應該工作,假設其數據驗證下拉框。

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Cells.Count > 1 Then Exit Sub 

Application.EnableEvents = False 

On Error GoTo Errortrap 


'~~> Change it to the relevant string with which you want to compare 
StringToCheck1 = "C" 
StringToCheck2 = "F" 


If Not Intersect(Target, Range("J3")) Is Nothing Then 
    '~~> Check for the cell value 
    If Target.Value = StringToCheck1 Then 
     'change checkbox value to rue if it matches 
     Worksheets("ws_Step3").Coffeecup.Value = True 
     ElseIf Target.Value = StringToCheck2 Then 
     'change checkbox value to true if it matches 
     Worksheets("ws_Step3").Coffeecup.Value = True 
     Else 
     'change checkbox value to false if it doesn't match 
     Worksheets("ws_Step3").Coffeecup.Value = False 
    End If 
End If 

LetsContinue: 
    Application.EnableEvents = True 
    Exit Sub 
Errortrap: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 

當下拉菜單中選擇C或F時,這會將複選框更改爲true(或勾號)。

編輯

OK,認爲香港專業教育學院得到它,(同樣,沒有重新創建原始表或能夠閱讀您的意見,這只是「應努力」境內)。

If Target.Cells.Count > 1 Then Exit Sub 
Application.EnableEvents = False 

On Error GoTo Errortrap 


'~~> Change it to the relevant string with which you want to compare 
StringToCheck1 = "Hoejresvingsshunt" 
StringToCheck2 = "Tilladt Hoejresving for roedt" 


If Not Intersect(Target, Range("J3")) Is Nothing Then 
    '~~> Check for the cell value 
    If Target.Value = StringToCheck1 Then 
    'change checkbox value to true if it matches 
    Worksheets("ws_Step3").HoejreD.Value = True 
    ElseIf Target.Value = StringToCheck2 Then 
    'change checkbox value to true if it matches 
    Worksheets("ws_Step3").HoejreD.Value = True 
    Else 
    'change checkbox value to false if it doesn't match 
    Worksheets("ws_Step3").HoejreD.Value = False 
    End If 

     'Hvis værdien hedder "fremført cykelsti": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(2, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(3, 2).Value 
    End If 

    'Hvis værdien hedder "Afkortet cykelsti": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(13, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(14, 2).Value 
    End If 

    'Hvis værdien hedder "Venstresving fra langsiden af T-kryds": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(17, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(18, 2).Value 
    End If 

    'Hvis værdien hedder "Cykelbane": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(21, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(22, 2).Value 
    End If 

    'Hvis værdien hedder "Ingen cykelfaciliteter": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(27, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(28, 2).Value 
    End If 

    'Hvis værdien hedder "Højresvingsshunt": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(31, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(32, 2).Value 
    End If 

    'Hvis værdien hedder "Hollænderboks": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(42, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(43, 2).Value 
    End If 

    'Hvis værdien hedder "Cykelsti i eget trace": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(46, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(47, 2).Value 
    End If 

    'Hvis værdien hedder "Tilladt højresving for rødt": 
    If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(57, 2).Value Then 
    'Default value sættes til det første i dropdown 
    ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(58, 2).Value 
    End If 

End If 

LetsContinue: 
    Application.EnableEvents = True 
    Exit Sub 
Errortrap: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 

​​

+0

嗯,當你打開VBA編輯器時,試圖編輯我在原始問題 – Klaus

+0

中所做的工作,在項目窗口中雙擊你的工作表名稱(例如「Sheet1(ws_Step3)」)左邊)在那裏添加代碼。確保您的下拉列表位於單元格「J3」中或更改代碼中的引用。確保所有名稱都正確,即Coffeecup等。另外,是否使用「數據驗證」添加了下拉列表? – DDuffy

+0

下拉列表是使用數據驗證添加的,是 – Klaus

0

我不認爲你有「工作表Sheet 3中的下拉菜單」,但你有下落,並在其中可以選擇的東西,你使用它作爲一個菜單的組合框。

使用組合框,您可以使用Change事件來檢測選擇。然後,您獲得已選擇的內容並根據您的行爲進行選擇。

Private Sub object_Change() 

其中object是組合框的名稱。

+0

你是對的,我的下拉選擇位於另一個工作表,稱爲「WS_DDL」 我沒有使用組合框到目前爲止據我所知,我使用Sheet3中單元格J3上的數據驗證。 J3中的下拉菜單來自我在我的下拉列表中提供的命名範圍。 我不完全確定你的解決方案是什麼意思,因爲我相當新的VBA。 你能詳細說明一下嗎? – Klaus

相關問題