运行 计数 - 输入少于预期数量时不求和

Running Count - Sum not summing when inputting less than expected quantity

我正在使用一个包含项目和数量的表格。我正在尝试创建一个 运行 计数,其中包含每个项目的数量(表示为 qtytxt1qtytxt2 等)。每个项目都有自己的数量输入字段,用结束编号表示(即,qtytxt1 适用于项目 1)。

我试图在 (emptyRow, 27) 中设置一个单元格,以输出输入到表单中的所有项目的总数量(即,项目 1 数量 = 2,000;项目 2 数量 = 3,000;预期输出 = 5,000).

“Item/Qty”总共有 10 个输入字段,但是,并不是所有 10 个字段都会被使用。我创建了一个代码,似乎可以按我喜欢的方式工作,但是,当输入少于 10 个项目时,我会收到 sum error 消息。

Dim emptyRow As Long
Dim data As Worksheet
Dim runCount As Long
        
Worksheets("mining history").Activate
emptyRow = WorksheetFunction.CountA(Range("i:i")) + 6
Set data = Sheets("data")
runCount = 0

If qtytxt2.Value = "" Then
    qtytxt2.Value = 0
    
    ElseIf qtytxt3.Value = "" Then
    qtytxt3.Value = 0
    
    ElseIf qtytxt4.Value = "" Then
    qtytxt4.Value = 0
    
    ElseIf qtytxt5.Value = "" Then
    qtytxt5.Value = 0
    
    ElseIf qtytxt6.Value = "" Then
    qtytxt6.Value = 0
    
    ElseIf qtytxt7.Value = "" Then
    qtytxt7.Value = 0
    
    ElseIf qtytxt8.Value = "" Then
    qtytxt8.Value = 0
    
    ElseIf qtytxt9.Value = "" Then
    qtytxt9.Value = 0
    
    ElseIf qtytxt10.Value = "" Then
    qtytxt10.Value = 0
    
End If

If IsEmpty(Range("E:E")) Then
    'Is Empty
    runCount = 0
    Else
    ' Not Empty
    runCount = WorksheetFunction.Sum(qtytxt1.Value, qtytxt2.Value, qtytxt3.Value, qtytxt4.Value, qtytxt5.Value, qtytxt6.Value, qtytxt7.Value, qtytxt8.Value)
        
    Cells(emptyRow, 27).Value = runCount
End If

您可以使用循环:

Dim emptyRow As Long
Dim data As Worksheet, wsMH As Worksheet
Dim runCount As Long, n As Long, v

Set data = Sheets("data")
Set wsMH = Worksheets("mining history")
'no need to Activate...
emptyRow = wsMH.Cells(Rows.count, "I").End(xlUp).row + 1

If Application.CountA(wsMH.Range("E:E")) = 0 Then
    runCount = 0
Else
    'loop all the entry textboxes
    For n = 1 To 10
        v = Me.Controls("qtytxt" & n).Value
        If Len(v) > 0 And IsNumeric(v) Then runCount = runCount + v
    Next n
    wsMH.Cells(emptyRow, 27).Value = runCount
End If

我怀疑你需要这个:

If qtytxt2.Value = "" Then
    qtytxt2.Value = 0
End If
If qtytxt3.Value = "" Then
    qtytxt3.Value = 0
End If

等等