运行下面的代码以及我希望看到的结果是隐藏行27上的所有列,但取决于数据的频率,这些列的范围是隐藏是不同的。基本上,任何以每日/每月/每周开始的表格中的任何内容都必须隐藏列,其余所有表单应单独保留。 它工作在一个简单的工作簿使用if语句(工作表从X开始与所有其他),但是当我添加case语句时它打破了...VBA范围是Nothing
用粗体标出的那一行是我得到的那一行错误: 运行时错误“1004” 应用程序定义或对象定义的错误
我是新来的这一点,所以请随时提出一个很好的VBA教程网站/本书。
Sub Hide_Zero_Columns()
Dim WS As Worksheet
Dim Col_to_hide As Range
Dim Range_to_hide As Range
Dim X As Integer
For Each WS In ThisWorkbook.Sheets
Worksheets(WS.Name).Activate
With WS
Select Case Data_Frequency_Sheets
Case Left(WS.Name, 5) = "Daily"
Set Range_to_hide = Range("BDV$27:CWH$27")
Case Left(WS.Name, 5) = "Month"
Set Range_to_hide = Range("AY$27:CO$27")
Case Left(WS.Name, 5) = "Weekl"
Set Range_to_hide = Range("HF$27:NN$27")
Case Else
Set Range_to_hide = Range("A1:B1")
End Select
Select Case Data_Condition
Case Left(WS.Name, 5) = "Daily"
X = 1
Case Left(WS.Name, 5) = "Month"
X = 30
Case Left(WS.Name, 5) = "Weekl"
X = 7
Case Else
X = 999
End Select
If X <> 999 Then
For Each Col_to_hide In ActiveSheet.Range(Range_to_hide) '<-- Error here
If UCase(Col_to_hide) = 0 Then
Col_to_hide.EntireColumn.Hidden = True
Else: Col_to_hide.EntireColumn.Hidden = False
End If
Next Col_to_hide
End If
End With
Next
ActiveWorkbook.Worksheets("Registrations").Activate
End Sub
excel VBA环境中的行和列也分配有数字地址。即列A是1,B是2等。如果可以用简单的case语句指定范围,请尝试设置for循环的上下边界并使用Columns(loopvar).Hidden = False – user3479671
顺便说一句,这个电子表格有多大你一路进入专栏CWH?当我滚动到一个新的excel文档的最右侧时,它以“IV” – user3479671
结束,感谢您的快速回复......它是20MB的数据 - 相当大,我会说 –