Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 向子程序添加字体颜色和无填充_Vba_Excel - Fatal编程技术网

Vba 向子程序添加字体颜色和无填充

Vba 向子程序添加字体颜色和无填充,vba,excel,Vba,Excel,希望能快速解决这个问题。我有一个子例程,我正在使用它来修改工作簿中所有工作表的列大小,这非常好,但我想添加到这个子例程中,以便它将更改我范围内所有单元格的字体颜色黑色,并从中删除任何填充颜色。我已经写了下面的代码,但它似乎没有按照我想要的方式执行。任何关于我如何纠正这一点的想法都将非常棒 Sub forEachWs() Dim ws As Worksheet 'Opens new workbook for formatting Workbooks.Open "C:\Users\XNEID\De

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

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

我建议从底部向上定义最后一行,而您省略了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
避免使用选择和活动工作簿。相反,只需直接引用范围。试试这个:

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
您需要完全限定单元格的对象 使用变量。看看我是如何用它找到最后一行的 避免使用。选择 这就是你想要的吗

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 

你错过了一个点。非常感谢你。这真是太棒了。