我正在尝试隐藏前 4 个选项卡中的活动单元格列。
我选择突出显示前 4 个选项卡并选择单元格 A1,然后使用以下代码:
ActiveCell.EntireColumn.Hidden = True
这会隐藏第一个选项卡中的 A 列,但不会隐藏选项卡 2、3、4。
它必须是选定的单元格,而不是
Range("A1").EntireColumn.Hidden = True
,因为该单元格可以是我试图使用偏移函数隐藏的任何活动单元格。
您可以存储活动单元格的位置,然后循环浏览每个工作表并使用该位置作为列隐藏的基础..
Sub tested()
Dim cell_address As String
Dim wsName, ws, c As Range
cell_address = ActiveCell.Address
wsName = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")
For Each ws In wsName
Sheets(ws).Range(cell_address).EntireColumn.Hidden = True
Next
End Sub
用法
Sub HideCellColumnsTEST()
Dim wsIDs(): wsIDs = Array(1, 2, 3, 4)
Dim ws As Worksheet: Set ws = ActiveSheet
Dim cell As Range: Set cell = ws.Range("A1")
'or:
'Set cell = ActiveCell
'Set cell = ActiveCell.Offset(, 3) '...etc.
HideCellColumns cell, wsIDs
End Sub
方法
Sub HideCellColumns(ByVal cell As Range, ByVal wsIDs As Variant)
Dim CellAddress As String: CellAddress = cell.Address
Dim wb As Workbook: Set wb = cell.Worksheet.Parent
Dim ws As Worksheet, wsID
For Each wsID In wsIDs
On Error Resume Next
Set ws = wb.Worksheets(wsID)
On Error GoTo 0
If Not ws Is Nothing Then ' worksheet exists
ws.Range(CellAddress).EntireColumn.Hidden = True
Set ws = Nothing ' reset for the next iteration
'Else ' worksheet doesn't exist; do nothing!?
End If
Next wsID
End Sub