【发布时间】:2016-05-03 21:51:52
【问题描述】:
我有一个问题,我已经尝试在互联网上搜索很多,但没有找到可以帮助我的解决方案。
这是我的问题: 我在单元格 J3 的 sheet3 中有一个下拉菜单(在 vba 中称为 ws_step3)。 下拉菜单有 9 个选项,其中 2 个选项会自动启用一个复选框(让我们将复选框称为“咖啡杯”)
9 个选项是 A、B、C 等。
我正在寻找一个 VBA 代码,如果选中了 2 个选项,它会自动检查该复选框(假设它的 C 和 F 选中了复选框)
我使用 Active X 复选框,并使用下拉菜单
希望任何人都可以帮助我。
来自 VBA 新手的提前 TY :-)
/克劳斯
编辑 #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 在这方面的帮助 - 我已经在 J3 的 Private Sub Worksheet_Change(ByVal Target As Range) 中有这个
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 的建议来了(改成真正的问题,不再拐弯抹角)
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
【问题讨论】:
-
到目前为止你尝试过什么?尝试是有趣的部分。您想考虑您的伪代码,然后尽可能多地将其转换为 VBA。所以你会想要一些类似的东西:如果 ws_steps.Text 等于“C”和“F”,那么 CheckBoxName.Value 等于 true。尝试将其转换为 VBA 并向我们展示您所拥有的。这里的人不会为你做你的工作,但如果你遇到困难,有很多人会有所帮助。
-
忘了提及,如果您选择了选项 C/F 并希望从下拉菜单中重新选择任何选项 A 或 B,则应再次取消选中该复选框,但仅适用于选项 A 或 B,如果它已经从选择 C/F 中被选中,则其余部分应保持选中状态。
-
试过这个: 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
-
你最好用你尝试过的东西而不是在 cmets 中编辑问题。
-
完成,感谢您为我解决这个问题 :-)