Excel宏:(1)下面的代码不起作用(2)如何在任何工作表上实时运行宏

时间:2015-12-02 02:54:03

标签: excel vba excel-vba

让我解释一下我试图使用下面的宏解决的问题。有一个模板表,我将填写D列。如果D42的值(基于之前的输入计算)是< D43(固定值),我希望列E-P保持隐藏状态。如果D42> D43,我希望列E-P出现(需要填写)。我的代码不起作用 - 似乎是Number_1& Number_2都被指定为0。

我想解决的第二个问题是我将这个模板表复制到另一张表(让我们称之为XYZ)并在那里运行它 - 我认为使用ActiveSheet会解决它,但似乎不起作用。理想情况下,如果宏可以实时运行,我希望它(因此,没有按钮可以启用宏) - 不知道如何解决这个问题

非常感谢任何帮助!

Sheets(ActiveSheet.Name).Select

Columns("E:P").EntireColumn.Hidden = True

Dim Number_1 As Integer
Dim Number_2 As Integer

Number_1 = ActiveSheet.Range("D42").Value
Number_2 = ActiveSheet.Range("D43").Value

If Number_1 - Number_2 > 0 Then

Columns("E:P").EntireColumn.Hidden = False

Else

Columns("E:P").EntireColumn.Hidden = True

End If

1 个答案:

答案 0 :(得分:1)

您需要将下面的代码放在工作表中,而不是模块中

enter image description here

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address(0, 0) = "D42" Then

        Dim Number_1 As Integer
        Dim Number_2 As Integer

        Number_1 = Range("D42").Value
        Number_2 = Range("D43").Value

        If Number_1 - Number_2 > 0 Then
            Columns("E:P").EntireColumn.Hidden = False
        Else
            Columns("E:P").EntireColumn.Hidden = True
        End If
    End If

End Sub

我不确定你的意思是将表格复制到另一张表格。

如果将整个工作表复制到另一个工作簿,则上面的代码也会跟随。 因为它附有工作表。

希望这有帮助!