【问题标题】:VBA-Excel macro only works on current sheetVBA-Excel 宏仅适用于当前工作表
【发布时间】:2018-08-28 22:12:51
【问题描述】:

大家好,这里是 VBA 的新手,我正在努力让我的宏在多个工作表上工作。如果它们在第 8 行中有“X”,我基本上想隐藏和取消隐藏列“B-AB”。目前宏仅适用于活动工作表而不是活动工作簿。谢谢!

Sub roll()

Dim sh As Worksheet
Dim c As Range


For Each sh In ActiveWorkbook.Sheets

With sh

Application.ScreenUpdating = False

Columns("B:AB").Select
Selection.EntireColumn.Hidden = False


        For Each c In Range("b8:ab8").Cells
            If c.Value = "X" Then
            c.EntireColumn.Hidden = True
            End If

        Next c
            End With

Next sh

Application.ScreenUpdating = True

End Sub

【问题讨论】:

标签: excel vba


【解决方案1】:

您需要在分配给 with 中注明的工作表的范围对象前面添加.

Sub roll()

Dim sh As Worksheet
Dim c As Range


For Each sh In ActiveWorkbook.Sheets

With sh

    Application.ScreenUpdating = False

    .Columns("B:AB").Hidden = False


        For Each c In .Range("b8:ab8").Cells
            If c.Value = "X" Then
                c.EntireColumn.Hidden = True
            End If
        Next c
    End With

Next sh

Application.ScreenUpdating = True

End Sub

【讨论】:

  • 非常感谢!奇迹般有效。我也想知道它是否工作得不好,因为我的代码没有像你拥有的那样对齐。我最后的结尾没有缩进与代码的“.columns”部分对齐?
  • 对齐与它的工作方式无关。只是看起来更好
  • 非常感谢斯科特!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
相关资源
最近更新 更多