我将ws变量设置为第一个工作表,但是我的代码在活动工作表上运行。
此代码从Sheet2上的一个按钮运行,并且我正在使用Sheets(1).Select
,因为第一个工作表的名称可能会有所不同。
我需要更改什么才能使我的代码在Sheets(1)上运行?
Function Test()
Dim ws As Worksheet
Dim lColumn As Long
Dim lRow As Long
Dim myRange As Range
Dim cell As Range
Set ws = Sheets(1)
With ws
lColumn = ws.UsedRange.Columns.Count
lRow = Cells(Rows.Count, 2).End(xlUp).Row
colName = Split(Worksheets(1).Cells(1, lColumn).Address, "$")(1)
Range("A1: " & colName & "1").Font.Bold = True
Set myRange = Range("A1: " & colName & "1")
For Each cell In myRange
cell.Interior.Pattern = xlSolid
cell.Interior.PatternColorIndex = xlAutomatic
cell.Interior.ThemeColor = xlThemeColorDark1
cell.Interior.TintAndShade = -0.249977111117893
cell.Interior.PatternTintAndShade = 0
Next
End with
End Function
答案 0 :(得分:3)
使用With
语句时,仍然需要在属性前面加上.
前缀,以便针对With
块变量进行成员调用。
我将lColumn = ws.UsedRange.Columns.Count
更改为lColumn = .UsedRange.Columns.Count
.Range("A1: " & colName & "1").Font.Bold = True
Set myRange = .Range("A1: " & colName & "1")
不使用.
,VBA认为您正在引用ActiveSheet
。