所以,我对Visual Basic有点新,并试图在excel上创建一个宏。理想情况下,宏应该遍历一个列并将值与其他值中的值“WB”分开,例如“EC”,并根据该值进行计算。
问题是存储WB值的变量都是零,存储EC值的变量实际上具有整个数据计算。
Sub Button2_Click()
Dim i As Integer, TotalEffortEC As Double, TotalNCEC As Double, TotalSizeEC As Double
Dim TotalEffortWB As Double, TotalNCWB As Double, TotalSizeWB As Double
TotalEffortEC = 0
TotalNCEC = 0
TotalSizeEC = 0
TotalEffortWB = 0
TotalNCWB = 0
TotalSizeWB = 0
i = 3
Do While Worksheets("Valid Data").Cells(i, 6).Value <> ""
If Cells(i, 7).Value = "WB" Then
TotalEffortWB = Worksheets("Valid Data").Cells(i, 23).Value + TotalEffortWB
TotalNCWB = Worksheets("Valid Data").Cells(i, 14).Value + TotalNCWB
TotalSizeWB = Worksheets("Valid Data").Cells(i, 13).Value + TotalSizeWB
Else
TotalEffortEC = Worksheets("Valid Data").Cells(i, 23).Value + TotalEffortEC
TotalNCEC = Worksheets("Valid Data").Cells(i, 14).Value + TotalNCEC
TotalSizeEC = Worksheets("Valid Data").Cells(i, 13).Value + TotalSizeEC
End If
i = i + 1
Loop
Worksheets("Summary").Range("A2").Value = (TotalEffortEC + Range("B10") + Range("C10")) / TotalNCEC
Worksheets("Summary").Range("B2").Value = (TotalEffortEC + Range("B10") + Range("C10")) / TotalSizeEC
Worksheets("Summary").Range("A3").Value = (TotalEffortWB + Range("B11") + Range("C11")) / TotalNCWB
Worksheets("Summary").Range("B3").Value = (TotalEffortWB + Range("B11") + Range("C11")) / TotalSizeWB
End Sub
代码的WB部分似乎没有运行,似乎只有EC部分正在运行,而不管条件的有效性如何。任何建议/帮助将不胜感激。
谢谢。
答案 0 :(得分:0)
正如@ Alex4336所述,您肯定会引用错误的Worksheet
对象,该对象属于要访问的Range
和Cells
个集合( parent {{ 1}} object ),混合限定对象和成员访问语法(Worksheet
和.Range
)以及使用“global” {{ 1}}和.Cells
个集合(绑定到有效Range
对象 )。
这会使您的代码不一致并成为潜在问题的根源。
您可以通过引入 Cells
声明({{3)来避免重复限定表达式和获得可读性,一致性和性能这样:
Worksheet