创建一个宏,根据另一个单元格的值运行另一个宏

时间:2017-09-15 16:52:41

标签: excel excel-vba vba

我想创建一个宏“条件”,如果所选单元格右侧的单元格42单元格的值大于1,则运行宏“FillOneOver”(已创建),否则将运行“FillBack1” “(已经创建)。两个已经创建的宏中的任何一个都将通过选择原始所选单元格正下方的单元格来结束(准备再次运行“条件”)。我希望能够根据标准水平垂直移动我的电子表格中的一个单元格。

2 个答案:

答案 0 :(得分:1)

  1. 在VBE的“项目”窗格中,双击此单元格所在的工作表/ tabname。

  2. 在您编写代码的窗格顶部,有两个下拉框。在第一个中选择“工作表”,在第二个中选择“更改”。

  3. 在编码窗格中生成一个新子例程,如下所示:

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    End Sub
    

    每次此工作表上的任何单元格更改时,此子例程都将自动执行。 Target将保留更改的范围/单元格,以便我们可以测试Target以查看它所关注的单元格,它的值是什么,并调用相应的子例程。

  4. 假设具有您关注的值的单元格为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
    
  5. 现在改变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