让我解释一下我试图使用下面的宏解决的问题。有一个模板表,我将填写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
答案 0 :(得分:1)
您需要将下面的代码放在工作表中,而不是模块中
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
我不确定你的意思是将表格复制到另一张表格。
如果将整个工作表复制到另一个工作簿,则上面的代码也会跟随。 因为它附有工作表。
希望这有帮助!