如何在VBA中对工作表数组使用Sum函数

如何在VBA中对工作表数组使用Sum函数,vba,Vba,我有一些代码,假设使用Sum函数将数组中工作表B6中的所有值相加,并将它们放入“总计”工作表的B6中 Range("B6").Value = Application.Worksheet.Sum(wkshtArray).Range("B6") wkshtArray= Array("Dec" & numYear, "Nov" & numYear) 您可以在此工作簿中循环工作表集合,并添加B6的值。这将排除带有If…Then语句的目标工作表 Sub test() Dim

我有一些代码,假设使用Sum函数将数组中工作表B6中的所有值相加,并将它们放入“总计”工作表的B6中

Range("B6").Value = Application.Worksheet.Sum(wkshtArray).Range("B6") 
wkshtArray= Array("Dec" & numYear, "Nov" & numYear)

您可以在
此工作簿中循环工作表集合
,并添加
B6
的值。这将排除带有
If…Then
语句的目标工作表

Sub test()

    Dim ws As Worksheet, tgtWs As Worksheet, lVal As Long
    Dim tgtName As String, yearNum As String

    Do
        yearNum = InputBox("Some Text")
        If Not IsNumeric(yearNum) Then
            MsgBox "Please enter a numeric number"
            yearNum = "0"
        End If
    Loop Until CLng(yearNum) > 0

    tgtName = "YTD" & yearNum

    ' This is the ws that will contain the sum product
    On Error GoTo ErrHandler
    Set tgtWs = ThisWorkbook.Worksheets(tgtName)
    On Error GoTo 0

    For Each ws In ThisWorkbook.Worksheets
        If Not ws Is tgtWs Then
            lVal = lVal + ws.Range("B6")
        End If
    Next ws

    tgtWs.Range("B6") = lVal

    Exit Sub
ErrHandler:
    MsgBox "Sheet name [" & tgtName & "] does NOT exist!", _
            vbCritical, "Invalid Sheet Name"

End Sub

如果您的意图是从计算中排除目标工作表,那么只需删除
如果不是ws is tgtWs,则删除
行。

我可以放心地假设您可能收到某种sytax错误。但是您仍然应该提供更多相关的代码。例如,很高兴看到
wkshtArray
声明,以及如何为其赋值。您好,欢迎使用StackOverflow。请务必清楚地陈述您的问题,并提出简明的问题,以便社区能够最好地帮助您。谢谢我不再收到任何错误消息,但当我转到“总计”工作表上的单元格B6时,另一个单元格上的值都不会被求和。该工作表的索引是什么?您需要将
Set tgtWs=thiswoolk.Worksheets(1)
的索引更改为正确的索引#,或者改用工作表名。因此,如果工作表名是总计所在的
Sheet4
,则该行应类似于
ThisWorkbook.Worksheets(“Sheet4”)
我将名称更改为我想要的工作表,但由于某种原因,它会给我错误代码“下标超出范围”。您还在使用数组吗?你现在不该这么做。所编写的代码应该可以正常工作(图纸名称除外)。代码中没有任何东西会引发该错误。工作表名称是什么,我将编辑我的答案,它应该像复制和粘贴一样简单:)