在选定工作表而非活动工作表上运行代码

时间:2018-10-05 18:29:32

标签: excel vba

我将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

1 个答案:

答案 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