2017-04-24 26 views
1

我有一個代碼,它可以更改行1和列B中工作簿中所有工作表的行高和列寬。 我的問題是它使所有我隱藏的列和行也可見。 請建議我如何修改代碼,以便它可以更改列寬和行高,但應保持隱藏狀態。保持行和列隱藏,同時更改行寬和列高度

Sub rowcolallsheetb() 
    Dim exworkb As Workbook 
    Dim xlwksht As Worksheet 
    Dim lastrow1 As Long 
    Dim lastcolumn1 As Long 
    Dim firstrowDB As Long 
    Dim Z As Integer 

    Dim ShtNames() As String 
    ReDim ShtNames(1 To ActiveWorkbook.Sheets.Count) 
    For Z = 1 To Sheets.Count 
    ShtNames(Z) = Sheets(Z).Name 
    Sheets(Z).Select 
    lastrow1 = Sheets(Z).Cells(Rows.Count, "A").End(xlUp).Row 
    lastcolumn1 = Sheets(Z).Cells(1, Columns.Count).End(xlToLeft).Column 
    ActiveWorkbook.Sheets(Z).Range(Sheets(Z).Cells(1, 2), Sheets(Z).Cells(lastrow1, lastcolumn1)).Select 
    Selection.Cells.RowHeight = 9.4 
    Selection.Cells.ColumnWidth = 11.2 
    Next Z 
End Sub 

回答

2

使用SpecialCells(xlCellTypeVisible)排除隱藏的單元格從你的行動:

With ActiveWorkbook.Sheets(Z).Range("B1", Sheets(Z).Cells(lastrow1, lastcolumn1)) _ 
    .SpecialCells(xlCellTypeVisible) 
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    .ColumnWidth = 11.2 
    .RowHeight = 9.4 
End With 

你也可以使用

   'vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 
With Selection.SpecialCells(xlCellTypeVisible) 
    .ColumnWidth = 11.2 
    .RowHeight = 9.4 
End With 

但它總是建議避免使用Select東西在VBA。

+0

我已經使用了下面線 – Stacey

+0

ActiveWorkbook.Sheets(Z).Range(表(Z).Cells(7,2),表格(Z).Cells(lastrow1,lastcolumn1))。選擇 隨着Selection.SpecialCells (xlCellTypeVisible) – Stacey

+0

仍然當我運行這個宏時,所有行和列的列寬和行高都在變化(不管是否隱藏),並打開所有隱藏的行和列 – Stacey