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

让我解释一下我正在尝试使用下面的macros来解决的问题。 有一个模板表,我将在那里填写D列。如果D42(根据前面的input计算)的值是<D43(固定值),我希望列EP保持隐藏状态。 如果D42> D43,我想列EP出现(这将需要填补)。 我的下面的代码不起作用 – 似乎Number_1和Number_2都被分配为0。

我试图解决的第二个问题是,我将该模板表复制到另一个表(我们称之为XYZ),并在那里运行 – 我认为使用ActiveSheet将解决它,但似乎并没有工作。 理想情况下,如果macros可以实时运行(因此,没有button来启用macros)我不希望如何解决这个问题

任何帮助是极大的赞赏!

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 

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

在这里输入图像说明

 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 

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

如果您将整个工作表复制到另一个工作簿,上面的代码也将遵循。 因为它附有工作表。

希望这个帮助!