【问题标题】:How to run macro when cell value changed by formula results for code that hides/unhides rows based on formula result?当单元格值被公式结果更改为基于公式结果隐藏/取消隐藏行的代码时,如何运行宏?
【发布时间】:2019-06-11 00:08:32
【问题描述】:

我有一个工作表,它根据单元格的值隐藏或取消隐藏行。我最终得到一个运行时错误,内容如下:

-2147417848 (80010108): 对象 'Range' 的方法 'Hidden' 失败,黄色箭头指向第一个 Rows 方程

然后是另一个运行时错误“1004”: 无法设置范围类的隐藏属性。

Option Explicit

Private Sub Worksheet_Calculate()
  Rows("1:26").EntireRow.Hidden = [a1] = 0
  Rows("27:52").EntireRow.Hidden = [a27] = 0
  Rows("53:78").EntireRow.Hidden = [a53] = 0
  Rows("79:104").EntireRow.Hidden = [a79] = 0
  Rows("105:130").EntireRow.Hidden = [a105] = 0
  Rows("131:156").EntireRow.Hidden = [a131] = 0
  Rows("157:182").EntireRow.Hidden = [a157] = 0
  Rows("183:208").EntireRow.Hidden = [a183] = 0
  Rows("209:234").EntireRow.Hidden = [a209] = 0

End Sub

【问题讨论】:

  • Worksheet_Change 不会因公式重新计算而被更改触发:为此您需要 Worksheet_Calculate
  • 我看不到你的新代码...
  • 解决了!非常感谢,哇,太棒了!
  • 我将第一行切换到“Private Sub Worksheet_Calculate()”并修复它:) 非常感谢@TimWilliams
  • 试试Me.Range("1:26").EntireRow.Hidden = [a1] = 0

标签: vba


【解决方案1】:

应该是这样的:

Private Sub Worksheet_Calculate() 
    Dim v
    v = Me.Range("A1").Value
    Me.Range("1:26").EntireRow.Hidden = (v = 0)
End Sub

不知道是否需要处理A1公式结果中的潜在错误值。

编辑:试试这个 - 看起来你的工作表正在进入一个循环,其中隐藏/显示正在重新触发另一个计算等

Private Sub Worksheet_Calculate()

  On Error GoTo haveError

  Application.EnableEvents = False

  Me.Range("1:26").EntireRow.Hidden = [a1] = 0
  Me.Range("27:52").EntireRow.Hidden = [a27] = 0
  Me.Range("53:78").EntireRow.Hidden = [a53] = 0
  Me.Range("79:104").EntireRow.Hidden = [a79] = 0
  Me.Range("105:130").EntireRow.Hidden = [a105] = 0
  Me.Range("131:156").EntireRow.Hidden = [a131] = 0
  Me.Range("157:182").EntireRow.Hidden = [a157] = 0
  Me.Range("183:208").EntireRow.Hidden = [a183] = 0
  Me.Range("209:234").EntireRow.Hidden = [a209] = 0

haveError:
  Application.EnableEvents = True

End Sub

【讨论】:

  • 它出现了一个运行时错误“1004”:无法设置范围类的隐藏属性,它关闭了我的工作表哈哈..太棒了:)
  • 除了上述错误之外,它还提出了“”Run=time error -2177417848(80010108) Method “hidden” of object 'range' failed.” 错误
  • 如果您有新的代码/错误要添加,您可以更新您的问题
  • 谢谢你,我已经更新了我的问题,你很有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
相关资源
最近更新 更多