添加字体颜色和无填充到子例程

时间:2017-06-06 11:10:01

标签: excel vba excel-vba

希望快速解决这个问题。我有一个子例程,我正在使用它修改工作簿中所有工作表的列大小,工作原理非常好,但我想添加到此子级,以便它将更改我的范围内的所有单元格的字体颜色黑色并删除他们也有填充颜色。我已经编写了下面的代码,但它似乎没有按我想要的方式执行。关于我如何纠正这一点的任何想法都会很棒!

Sub forEachWs()
Dim ws As Worksheet

'Opens new workbook for formatting
Workbooks.Open "C:\Users\XNEID\Desktop\Test MPAN Destination 
Folder\Shell_MPANs_Test1.xlsx"

For Each ws In ActiveWorkbook.Worksheets
Call resizingColumns(ws)
Next

End Sub

Sub resizingColumns(ws As Worksheet)
With ws
    .Range("A1:BB1").EntireColumn.AutoFit
    Range("A2:BB2", Range("A2:BB2").End(xlDown)).Select
    Selection.Font.Color = vbBlack
    Range("A2:BB2", Range("A2:BB2").End(xlDown)).Select
    Selection.Interior.ColorIndex = xlNone

End With 
End Sub

3 个答案:

答案 0 :(得分:1)

  1. 您需要完全限定单元格的对象
  2. 使用变量。看看我如何用它来找到最后一行
  3. 避免使用.Select
  4. 这是你在尝试的吗?

    With ws
        .Columns("A:BB").EntireColumn.AutoFit
        lrow = .Range("A" & .Rows.Count).End(xlUp).Row
    
        With .Range("A2:BB" & lrow)
            .Font.Color = vbBlack
            .Interior.ColorIndex = xlNone
        End With
    End Withh 
    

答案 1 :(得分:0)

我建议定义最后一行(通过从底部开始处理),并省略了With语句所需的点

Sub resizingColumns(ws As Worksheet)

Dim n As Long

With ws
    n = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("A1:BB1").EntireColumn.AutoFit
    .Range("A2:BB" & n).Font.Color = vbBlack
    .Range("A2:BB" & n).Interior.ColorIndex = xlNone
End With

End Sub

答案 2 :(得分:0)

避免使用SelectActiveWorkbook。相反,只需直接引用范围。试试这个:

Sub forEachWs()
Dim ws As Worksheet
Dim wb As Workbook

'Opens new workbook for formatting
Set wb = Workbooks.Open "C:\Users\XNEID\Desktop\Test MPAN Destination 
Folder\Shell_MPANs_Test1.xlsx"

For Each ws In wb.Worksheets
    Call resizingColumns(ws)
Next

End Sub

Sub resizingColumns(ws As Worksheet)

With ws
    .Range("A1:BB1").EntireColumn.AutoFit
    .Range("A2:BB" & .Cells(.Rows.Count, 1).End(xlUp).Row).Font.Color = vbBlack
    .Range("A2:BB" & .Cells(.Rows.Count, 1).End(xlUp).Row).Interior.ColorIndex = xlNone
End With

End Sub