希望快速解决这个问题。我有一个子例程,我正在使用它修改工作簿中所有工作表的列大小,工作原理非常好,但我想添加到此子级,以便它将更改我的范围内的所有单元格的字体颜色黑色并删除他们也有填充颜色。我已经编写了下面的代码,但它似乎没有按我想要的方式执行。关于我如何纠正这一点的任何想法都会很棒!
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
答案 0 :(得分:1)
.Select
这是你在尝试的吗?
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)
避免使用Select
和ActiveWorkbook
。相反,只需直接引用范围。试试这个:
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