在Excel,VBA中添加两个值

我是VBA新手,想添加两个值。 我有的代码是:

Cells(7 + i + 1, 6).Select sum1 = "=SUMIFS('[" + strFil_1 + "]Tooling forecast template'!R6C20:R500C20,'[" + strFil_1 + "]Tooling forecast template'!R6C7:R500C7,""=ME1"", '[" + strFil_1 + "]Tooling forecast template'!R6C5:R500C5,""=Test Tool"", '[" + strFil_1 + "]Tooling forecast template'!R6C13:R500C13,""=" + ArrME1(i) + """, '[" + strFil_1 + "]Tooling forecast template'!R6C6:R500C6,""<>Actual tool/equipment change"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Cancelled"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Not Ordered"")" sum2 = "=SUMIFS('[" + strFil_1 + "]Tooling forecast template'!R6C20:R500C20,'[" + strFil_1 + "]Tooling forecast template'!R6C7:R500C7,""=ME1"", '[" + strFil_1 + "]Tooling forecast template'!R6C5:R500C5,""=Hard Tool"", '[" + strFil_1 + "]Tooling forecast template'!R6C13:R500C13,""=" + ArrME1(i) + """, '[" + strFil_1 + "]Tooling forecast template'!R6C6:R500C6,""<>Actual tool/equipment change"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Cancelled"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Not Ordered"") " ActiveCell.FormulaR1C1 = sum1 + sum2 

我有这个总和的原因是因为如果我把它作为一个expression式,那么行将会太大,VBA不会将它分成两行,如果这是可能的,请张贴。

我用上面的代码得到的错误是只显示TRUE或FALSE,而不是实际的总和。

如果你想要的是两个公式的结果的总和,那么我build议把实际的公式放到两个实际的单元格中并添加结果。 说一个“硬工具”的结果,另一个“testing工具”的结果,说。

另外,如果你想在VBA中运行SUMIFS()函数,那么你可以用类似的方法(对于第一部分,未经testing)

 With Workbooks(strFil_1).Worksheets("Tooling forecast template") sum_range = Range(.Cells(6, 20), .Cells(500, 20)) criteria_range1 = Range(.Cells(6, 7), .Cells(500, 7)) criteria_range2 = Range(.Cells(6, 5), .Cells(500, 5)) criteria_range3 = Range(.Cells(6, 13), .Cells(500, 13)) criteria_range4 = Range(.Cells(6, 6), .Cells(500, 6)) criteria_range5 = Range(.Cells(6, 23), .Cells(500, 23)) End With sum1 = Application.WorksheetFunction.SumIfs( _ sum_range, _ criteria_range1, "ME1", _ criteria_range2, "Test Tool", _ criteria_range3, ArrME1(i), _ criteria_range4, """<>Actual tool/equipment change""", _ criteria_range5, """<>Cancelled""", _ criteria_range5, """<>Not Ordered""" _ ) 

不知道你在做什么,但sum1和sum2显然是string。
因此,您的最后一行在活动单元格中存储包含其他两个公式的连接的公式: "=sum1string=sum2string"

如果两个公式都是相同的string,返回的TRUE确实是一个正确的计算。

我build议你养成在每个程序的顶部添加OPTION EXPLICIT的习惯。 这将迫使你DIM你的variables。 例如,如果您将sum1作为单个,您将立即发现您的错误。

你可能会得到一个更好的结果:

 sum2 = "+SUMIFS(...." ActiveCell.FormulaR1C1 = sum1 & sum2 

或者,您可以在sum1和sum2上尝试使用EVALUATE或[]:

 ActiveCell.FormulaR1C1 = [sum1] + [sum2]