Autosum Cells VBA Excel

时间:2012-11-05 07:42:00

标签: excel vba

我尝试使用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:

enter image description here

4 个答案:

答案 0 :(得分:6)

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

Sub autosumtest()
   Dim total As Integer
   total = CInt([=sum(sheet1Test!F16:G20)])
   MsgBox (total)
End Sub

答案 1 :(得分:2)

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

您还可以使用以下内容;

Sub autosumtest()
    Dim total As Integer
    total = [=SUM(Sheet1Test!F16:G20)]
    MsgBox (total)
End Sub

答案 2 :(得分:2)

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

应使用工作表功能来总结所需的范围。除非希望进一步选择,否则不需要选择。

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

答案 3 :(得分:1)

好的,考虑到一些的长度,其他答案和冗余的CInt ....

Sub Easy()
MsgBox Application.Sum(Sheets("Sheet1Test").Range("F16:G20"))
End Sub