4

我正在尝试使用 VBA 对 Excel 中的一个单元格块中的值进行自动求和。在调试以下代码时,我不断收到类型不匹配错误。我哪里做错了?

Sub autosumtest()
    Dim total As Integer
    Worksheets("Sheet1Test").Select
    Range("F16:G20").Select
    total = CInt("=SUM(Selection.Values)")
    MsgBox (total)
End Sub

EDIT 1:这是我的测试数据的简单示例,称为 Autosum Range:

在此处输入图像描述

4

4 回答 4

6

您可以使用 [] 来评估任何电子表格表达式。

Sub autosumtest()
   Dim total As Integer
   total = CInt([=sum(sheet1Test!F16:G20)])
   MsgBox (total)
End Sub
于 2012-11-05T08:08:03.037 回答
2

您的范围F16 to G20将包含不同的格式。确保他们已经解决了Number格式和问题。

您还可以使用以下内容;

Sub autosumtest()
    Dim total As Integer
    total = [=SUM(Sheet1Test!F16:G20)]
    MsgBox (total)
End Sub
于 2012-11-05T07:50:51.820 回答
2

是的,存在类型不匹配,因为 "=SUM(F16:G20)" 是一个字符串。

Worksheetfunction 应用于对所需范围求和。除非有进一步选择的愿望,否则 .Select 是不需要的。

Option Explicit

Sub autosumtest()
    Dim total As Integer
    Dim rng As Range

    Set rng = Worksheets("Sheet1Test").Range("F16:G20")
       total = CInt(WorksheetFunction.Sum(rng))
    MsgBox (total)
End Sub
于 2012-11-05T07:58:41.333 回答
1

好的,鉴于其他一些答案的长度和多余的CInt......

Sub Easy()
MsgBox Application.Sum(Sheets("Sheet1Test").Range("F16:G20"))
End Sub 
于 2012-11-05T09:01:30.467 回答