2012-12-10 20 views
0

我在第一行有一堆帶有特定字符串的工作簿。所以,舉例來說,我說我在A-D行有「狗」,「貓」,「松鼠」和「魚」。我想要一個宏來搜索值'Dog'和'Squirrel' ,然後隱藏列,然後將「Cat」和「Fish」的寬度設置爲11.如何根據第一行中的字符串隱藏列和設置寬度?

我不能只使用列號,因爲它們在所有工作簿中都不一致。謝謝你的幫助。

Sub HideColumn1() 
If Range("B4").Value = 0 Then 
    Columns("H").EntireColumn.Hidden = True 
Else 
    Columns("H").EntireColumn.Hidden = False 
End If 
End Sub 
+0

之前,你可以隱藏和調整列,你首先需要確定哪些列需要工作。我建議製作一個循環,查看每列,並將列號存儲在特定名稱的變量中。一旦你分類了所有的列,那麼你可以隱藏/調整它們的大小。 – PowerUser

回答

1

變化幅度( 「A1:D1」)將所需的範圍或更多的東西動態:

Dim cell As Range 
Dim hiddenRng As Range, widthRng As Range 

For Each cell In Range("A1:D1") 

    If cell = "Dog" Or cell = "Squirrel" Then 

     If (hiddenRng Is Nothing) Then 
      Set hiddenRng = cell 
     Else 
      Set hiddenRng = Union(hiddenRng, cell) 
     End If 

    End If 

    If cell = "Cat" Or cell = "Fish" Then 

     If (widthRng Is Nothing) Then 
      Set widthRng = cell 
     Else 
      Set widthRng = Union(widthRng, cell) 
     End If 

    End If 

Next cell 

If (Not hiddenRng Is Nothing) Then hiddenRng.EntireColumn.Hidden = True 
If (Not widthRng Is Nothing) Then widthRng.EntireColumn.ColumnWidth = 11 
+0

謝謝。爲分開隱藏列添加一個子。獲取「對象全局範圍失敗」的錯誤。 Sub Hide_Column() 範圍(「A,C:AV,AY:BA,BJ:BR」)選擇 Selection.EntireColumn.Hidden = True End Sub – STANGMMX

+0

您的範圍不是範圍。使用範圍(「AC:AV,AY:BA,BJ:BR」) – InContext

0

這裏是另一個例子

Sub hideColumns() 
Dim iRow, iCol As Integer 
iRow = 1 
iCol = 1 

Dim cat, dog, fish, squirrel As String 

cat = "Cat" 
dog = "Dog" 
fish = "Fish" 
squirrel = "Squirrel" 

Do While Cells(iRow, iCol).Value <> "" 
    If Cells(iRow, iCol).Value = dog Or Cells(iRow, iCol).Value = squirrel Then 
     Cells(iRow, iCol).Select 
     Selection.EntireColumn.Hidden = True 
    ElseIf Cells(iRow, iCol).Value = cat Or Cells(iRow, iCol).Value = fish Then 
     Cells(iRow, iCol).EntireColumn.Select 
     Selection.ColumnWidth = 11 
    Else 
     'did not find anything do somthing 
    End If 

iCol = iCol + 1 
Loop 
End Sub 
相關問題