我希望能够根据单元格的结果运行宏,例如。
如果A1是1111100然后运行X宏如果它的1000000然后运行这个宏等我看了一下“案例选择”但是我在这个问题上缺乏知识使我可能不是我想要的东西。< / p>
有什么想法吗? :/
先谢谢你。
JB
答案 0 :(得分:1)
你可以将两种类型结合起来,是的,Case Select
是最容易阅读和维护的。
这是根据A1中的内容运行不同例程的示例代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1"), Target) Is Nothing Then
Application.EnableEvents = False
Select Case Target.Value
Case "A"
FunctionWhenA
Case 1
ThasIsAnotherFunction
End Select
Application.EnableEvents = True
End If
End Sub
请注意,我还会禁用/启用事件,因此每次更改单元格时都不会触发此事件
答案 1 :(得分:0)
有两种主要类型的Excel宏
1-为执行操作,更改数据等而编写的内容
2-用于执行计算并将值返回到某些单元格的那些 (用作未内置于excel的自定义公式)
第一种类型只能通过单击表单上的按钮,在Excel中调用宏窗口并选择要运行的宏的名称来触发开始执行
第二种类型可以在某个单元格的值发生变化时运行(该单元格必须是所述宏函数的输入,用于处理,计算并返回某个输出),因此返回的值将是存储在另一个单元格上。
在第二种类型中,Excel将忽略任何尝试修改其他单元格内容的代码,对工作表,工作簿或任何其他不限于包含自定义宏公式的单元格的操作执行操作。
如果您打算运行第一种类型的宏,并希望在某个值更改后立即执行,那么这是不可能的。
如果你想编写第二种类型的宏,那么这是可能的,但代码只能限于一个单元格。
答案 2 :(得分:0)
是的,需要循环使用它们。
在这种情况下,你可以用你的VBA实现替换下面的“cas”潜艇。
Function Strange(myVal)
Select Case myVal
Case 1
Cas1
Case 2
Cas2
Case 3
Cas3
End Select
End Function
Sub Cas1()
MsgBox ("hi")
End Sub
Sub Cas2()
MsgBox ("ha")
End Sub
Sub Cas3()
MsgBox ("ho")
End Sub
Sub LoopThem()
Do While ActiveCell.Value <> ""
Strange (ActiveCell.Value)
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
所以单元格A1到A3的值为1,2,3会连续弹出msgboxes“hi”“ha”“ho”。
答案 3 :(得分:0)
修正了它。
通过使用Intergers来停止当我没有其他单元格有数据来停止宏,并检测到许多'1'都在代码中并使用“For”命令根据需要复制数据。