我想创建一个宏“条件”,如果所选单元格右侧的单元格42单元格的值大于1,则运行宏“FillOneOver”(已创建),否则将运行“FillBack1” “(已经创建)。两个已经创建的宏中的任何一个都将通过选择原始所选单元格正下方的单元格来结束(准备再次运行“条件”)。我希望能够根据标准水平垂直移动我的电子表格中的一个单元格。
答案 0 :(得分:1)
在VBE的“项目”窗格中,双击此单元格所在的工作表/ tabname。
在您编写代码的窗格顶部,有两个下拉框。在第一个中选择“工作表”,在第二个中选择“更改”。
在编码窗格中生成一个新子例程,如下所示:
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
每次此工作表上的任何单元格更改时,此子例程都将自动执行。 Target
将保留更改的范围/单元格,以便我们可以测试Target
以查看它所关注的单元格,它的值是什么,并调用相应的子例程。
假设具有您关注的值的单元格为A1
,则代码可能类似于:
Private Sub Worksheet_Change(ByVal Target As Range)
'Using "Intersect" to determine if A1 has changed
If Not (Intersect(Target, Range("A1")) Is Nothing) Then
If Target.Value > 1 Then
Call Macro2
Else
Call Macro3
End If
End If
End Sub
现在改变A1
中的值,并调用相应的子程序/宏。
答案 1 :(得分:1)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count < 2 Then 'Checks to see if more than one cell is selected
If Target.Value <> Empty Then 'Is the cell empty
If IsNumeric(Target) = True Then 'Is the cell a number
If Target.Value > 1 Then 'Is the value greater than 1
macro2 'runs macro2
Else
macro3 'runs macro3
End If
End If
End If
End If
End Sub