簡體   English   中英

如何在多個工作表中隱藏多個列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM