VBAmacros根据单元格的结果运行

例如,我希望能够根据单元格的结果运行macros。

如果A1是1111100然后运行Xmacros如果它的1000000然后运行这个macros等。我曾看过“案例select”,但我在这个问题上的知识缺乏使我可能不是我想要的东西。

有任何想法吗? :/

先进的谢谢你。

JB

你可以结合这两种types,是的,一个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 

请注意,我也禁用/启用事件,所以这不会触发每一个单元格更改

有两种主要types的Excelmacros

1-为了执行操作,更改数据等而写入的内容

2和那些被写入来执行计算并将值返回给特定的单元格(用作自定义公式,而不是内置到Excel中)

第一种types只能通过单击表单上的button来启动执行,调用Excel中的macros窗口并select要运行的macros的名称

第二种types可以在特定单元格的值发生变化时运行(该单元格必须是所述macros函数的input,用于计算并返回某个输出),因此返回的值将被存储在另一个细胞。

在第二种types中,Excel将忽略任何试图修改其他单元格内容的代码,在工作表,工作簿或任何其他不受限于包含自定义macros公式的单元格的操作上执行操作。

如果你打算运行第一种types的macros,并希望在某个值发生变化之后马上执行它,那么这是不可能的。

如果你想写第二个types的macros,那么这是可能的,但是代码只能被限制在一个单元中。

是的,需要通过他们循环。

在这种情况下,你可以用你的VBA的实现replace下面的“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 

因此,值为1,2,3的单元格A1到A3将连续popupmsgboxes“hi”“ha”“ho”。

修复。

通过使用Intergers做到这一点,当我没有进一步的数据单元来停止macros,并且在代码中检测到许多'1'时,使用“For”命令根据需要复制数据。