将Excel VBA宏从活动工作表转换为无焦点的所有工作表

时间:2014-06-25 09:51:12

标签: excel vba excel-vba formula

我目前正在使用一个宏,根据“A”列中是否有数据自动填充公式。宏工作正常,只在当前的选择表(即用户所在的表)上。

任何人都可以帮我转换为工作簿中所有工作表的工作吗?

公式如下:

Sub FillForms()
Dim WKS As Worksheet

For Each WKS In Worksheets

    Select Case UCase(WKS.Name)
    Case "Sheet1"
        Range("J3:M3").AutoFill Destination:=Range("J3:M" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case "Sheet2"
        Range("J3:M3").AutoFill Destination:=Range("J3:M" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case "Sheet3"
        Range("J3:M3").AutoFill Destination:=Range("J3:M" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case "Sheet4"
        Range("J3:M3").AutoFill Destination:=Range("J3:M" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case "Sheet5"
        Range("J3:M3").AutoFill Destination:=Range("J3:M" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case "Sheet6"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case "[Day 3]"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case "[Day 5]"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case "[Day 10]"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case "[Day 15]"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case "[Day 20]"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" & Cells(Rows.Count, "A").End(xlUp).Row)
    Case Else
         'Code for other sheets
    End Select
Next WKS
End Sub

由于

1 个答案:

答案 0 :(得分:2)

怎么样

WKS.Range("J3:M3").AutoFill ...

而不是

Range("J3:M3").AutoFill ...

这样,您可以指定范围位于指定的工作表中,而不是在活动工作表中。

稍后修改:请注意,Destination参数的引用可能也需要更新到指定的工作表而不是活动的工作表。