[英]How to hide multiple columns in multiple worksheets
我要遍歷特定目錄中的25個工作簿,並且需要在每個工作簿中隱藏相同的列。
我已經設置了代碼,以使其遍歷每個工作簿,但是在隱藏列時卻失敗了。 我已經完成了谷歌搜索,但是缺少了一些東西。
無效的特定代碼:
Worksheets("Ops1").Range("F:AE,AG:AQ,AS:CP,CW:EF").EntireColumn.Hidden = True
Worksheets("Ops2").Range("F:AE,AG:AQ,AS:CP,CW:EF").EntireColumn.Hidden = True
整個過程:
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)
'your code here
Worksheets("Ops1").Range("F:AE,AG:AQ,AS:CP,CW:EF").EntireColumn.Hidden = True
Worksheets("Ops2").Range("F:AE,AG:AQ,AS:CP,CW:EF").EntireColumn.Hidden = True
End With
xFileName = Dir
Loop
End If
我收到超出范圍的運行時錯誤代碼'9'下標 。
您可以嘗試將范圍設置為這樣的變量。
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Dim sht1ColumnsToHide As Range
Dim sht2ColumnsToHide As Range
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Worksheet("Ops1")
Set ws2 = Worksheet("Ops2")
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)
'your code here
Set ws1 = Worksheets("Ops1")
Set ws2 = Worksheets("Ops2")
With ws1
Set sht1ColumnsToHide = Application.Union(.Columns("F:AE"), _
.Columns("AG:AQ"), _
.Columns("AS:CP"), _
.Columns("CW:EF"))
sht1ColumnsToHide.EntireColumn.Hidden = True
End With
With ws2
Set sht2ColumnsToHide = Application.Union(.Columns("F:AE"), _
.Columns("AG:AQ"), _
.Columns("AS:CP"), _
.Columns("CW:EF"))
sht2ColumnsToHide.EntireColumn.Hidden = True
End With
End With
xFileName = Dir
Loop
End If
可以精簡一些,但這應該可以解決問題。 只需重用您的代碼:
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Dim X As Long, C As Long, lCol As Long
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & ".xls")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)
'not sure if all your sheets are called OpsX, might need to change this
For X = 1 To 2 'Loop through all the sheets
With .Worksheets("Ops" & X) 'Note the use of <[ . ]> (DOT) in the With statement
lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 'Get the last column, relative to row 1
For C = lCol To 1 Step -1 'Loop through all columns, starting at last one
Select Case C
Case 5 To 31 'F:AE
.Cells(1, C).EntireColumn.Hidden = True
Case 33 To 43 'AG:AQ
.Cells(1, C).EntireColumn.Hidden = True
Case 45 To 94 'AS:CP
.Cells(1, C).EntireColumn.Hidden = True
Case 101 To 136 'CW:EF
.Cells(1, C).EntireColumn.Hidden = True
End Select
Next C
End With
Next X
End With
xFileName = Dir
Loop
End If
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.