vba - 循环内的 Application.WorksheetFunction.Sum

标签 vba excel

我有这段代码,它从 SQL 查询中检索一些数据并将其放入 Excel 工作表中:

   I = 4
 Do While Not rs.EOF
  I = I + 1
  Sheet1.Range("A" & I).Value = rs(0)
  Sheet1.Range("B" & I).Value = rs(1)
  Sheet1.Range("C" & I).Value = rs(2)
  Sheet1.Range("D" & I).Value = rs(3)
  Sheet1.Range("E" & I).Value = rs(4)
  Sheet1.Range("F" & I).Value = rs(5)
  Sheet1.Range("G" & I).Value = rs(6)
  Sheet1.Range("H" & I).Value = rs(7)
  Sheet1.Range("I" & I).Value = rs(8)
  Sheet1.Range("J" & I).Value = rs(9)
  Sheet1.Range("K" & I).Value = rs(10)
  Sheet1.Range("L" & I).Value = rs(11)
  Sheet1.Range("M" & I).Value = rs(12)
  Sheet1.Range("N" & I).Value = rs(13)
  Sheet1.Range("O" & I).Value = rs(14)
  Sheet1.Range("P" & I).Value = rs(15)
  Sheet1.Range("Q" & I).Value = Application.WorksheetFunction.Sum(Sheet1.Range("E" & I), Sheet1.Range("P" & I))
  'Sheet1.Range("Q" & I).Value = Sheet1.Range("E" & I).Value + Sheet1.Range("F" & I).Value + Sheet1.Range("G" & I).Value + Sheet1.Range("H" & I).Value
  rs.MoveNext
 Loop

现在,我试图对从“E”列到“P”列的一系列列进行求和,但它不起作用,它只是仅对这些单元格求和(“E”&I 和“P”&I ),而不是范围。

请问有什么帮助吗?

最佳答案

首先,您可以使用 with 语句优化和清理代码:

使用 with 清理代码

不要这样做

Sheet1.Range("A" & I).Value = rs(0)
Sheet1.Range("B" & I).Value = rs(1)
Sheet1.Range("C" & I).Value = rs(2)
...

With Sheet1
    .Range("A" & I).Value = rs(0)
    .Range("B" & I).Value = rs(1)
    .Range("C" & I).Value = rs(2)
    ...
End With

对范围而不是单位单元求和

理解你的原始陈述

在您的原始声明中:

Application.WorksheetFunction.Sum(Sheet1.Range("E" & I), Sheet1.Range("P" & I))

您正在使用多个参数调用工作表函数(就像使用 SUM(E1, P1) 一样,但您想要对一个范围进行求和,即 SUM(E1:P1).

解决您的问题

更好的尝试:

Application.WorksheetFunction.Sum(Sheet1.Range("E" & I & ":P" & I))

请注意,您还可以这样定义范围:

With Sheet1
    Application.WorksheetFunction.Sum(.Range(.Cells(I, "E"), .Cells(I, "P"))
End With

后者非常有用,因为您可以将 .Cells 与列中的字母或 Long 一起使用。

关于vba - 循环内的 Application.WorksheetFunction.Sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8928757/

相关文章:

html - vba 中的 Web Scraping - 构造工作数据并从左到右单元格写入

php - 我用于将 MySQL 模式导出到 .xls 的 PHP 脚本转储 HTML 工件

excel - 如何在 Excel 2010 中连接日期

arrays - 如何将不确定的数组传递并循环给 VBA 中的函数?

ms-access - 随时执行错误标签

excel - 使用数组设置 Excel 范围格式

vba - 当将工作表调暗为工作表但不是变体时,出现 "Method or Data Member Not Found"

Excel 检查同一行中的任何 2 个值是否等于任何其他值

vba - 究竟什么是属性(property)程序?

excel - 将数组从 VBA 传递到 VB.NET