我目前有一个已经创建的工作簿,该工作簿已经具有2个特定单元的VBA msgbox代码输入。但是,我需要为已有条件格式的2个其他单元格添加其他文本框代码。 当前,如果在下拉菜单上选择“否”,则条件格式会将单元格颜色更改为绿色,如果选择“是”,则将其变为红色。
仅当选择“是”时,我才需要创建msgbox代码,并弹出vbcaution msgbox。
我尝试使用VBYesNo代码,但是,这似乎与VBbuttons绑定在一起,而不是我想要的。此外,由于此工作表已经有专门写给与该所需功能无关的其他单元的代码。如何创建额外的代码,使之不会出现编译或语法错误?
此工作表已经存在的当前代码,我无法让其他代码干扰:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
If Not Intersect(Target, Range("D11:D13")) Is Nothing Then
For Each C In Intersect(Target, Range("D11:D13"))
Select Case C.Value2
Case "Kansas", "KS"
MsgBox "Test 1"
Case "Ohio", "OH"
MsgBox "Test 2"
Case "New York", "NY"
MsgBox "Test 3"
End Select
Next C
End If
End Sub
我希望该代码仅在为单元格D17和D21选择“是”时才发出msgbox,并且由于已经为该位置编写了msgbox代码,因此不需要创建编译或语法错误该工作簿。
答案 0 :(得分:0)
以下代码不会干扰您的其他代码。我已经将新代码和原始代码都包含在一个vba脚本中。
为使代码正常运行,D17和D21的事件触发器都需要分开,否则,如果D17已经填充“是”,然后对D21进行了更改,则由于D17值而将触发事件更改反之亦然。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ans As Variant
Dim C As Range
If Not Intersect(Target, Range("D17")) Is Nothing Then
If Range("D17").Value = "Yes" Then
Ans = MsgBox("Your warning goes here.", vbYesNo)
Select Case Ans
Case vbYes
' If Yes then the yes code goes here
Case vbNo
' If No then the yes code goes here
End Select
End If
End If
If Not Intersect(Target, Range("D21")) Is Nothing Then
If Range("D21").Value = "Yes" Then
Ans = MsgBox("Your warning goes here.", vbYesNo)
Select Case Ans
Case vbYes
' If Yes then the yes code goes here
Case vbNo
' If No then the yes code goes here
End Select
End If
End If
' Your piece of code:
If Not Intersect(Target, Range("D11:D13")) Is Nothing Then
For Each C In Intersect(Target, Range("D11:D13"))
Select Case C.Value2
Case "Kansas", "KS"
MsgBox "Test 1"
Case "Ohio", "OH"
MsgBox "Test 2"
Case "New York", "NY"
MsgBox "Test 3"
End Select
Next C
End If
End Sub