es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recuento en ejecución: La suma no se realiza correctamente cuando se introduce una cantidad inferior a la esperada.

Estoy utilizando un formulario que toma un elemento y una cantidad. Estoy tratando de crear un conteo acumulativo que consiste en la cantidad (indicado como qtytxt1, qtytxt2, etc) de cada elemento. Cada elemento tiene su propio campo de entrada de cantidad indicado con el número final (es decir, qtytxt1 se aplica al elemento 1).

Estoy tratando de tener una celda ubicada en (emptyRow, 27) para mostrar la suma de la cantidad total de todos los elementos introducidos en el formulario (es decir, Cantidad del elemento 1 = 2,000; Cantidad del elemento 2 = 3,000; Resultado esperado = 5,000).

Hay un total de 10 campos de entrada para “Elemento/Cantidad,” sin embargo, no se espera que se utilicen los 10 campos. He creado un código que parece funcionar como prefiero, sin embargo, recibiría un mensaje de error de suma al ingresar menos de 10 elementos.

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
    'Está vacío
    runCount = 0
    Else
    'No está vacío
    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
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para evitar el mensaje de error de suma al ingresar menos de 10 elementos, puedes modificar el código para que solo se sumen los campos de cantidad que tengan un valor ingresado.

    En lugar de incluir todos los 10 campos de cantidad en la fórmula WorksheetFunction.Sum, puedes usar un bucle para recorrer los 10 campos y verificar si tienen un valor. Si se encuentra un valor, agrégalo a la variable runCount.

    Aquí tienes un ejemplo de cómo podrías modificar el código:

    If IsEmpty(Range("E:E")) Then
        'Está vacío
        runCount = 0
    Else
        'No está vacío
        For i = 1 To 10
            fieldName = "qtytxt" & i
            If Not IsEmpty(Range(fieldName)) Then
                runCount = runCount + Range(fieldName)
            End If
        Next i
    
        Cells(emptyRow, 27).Value = runCount
    End If
    

    Este código recorrerá cada uno de los 10 campos de cantidad y agregará el valor a runCount si no está vacío. De esta manera, solo se incluirán en la suma los campos de cantidad ingresados y no recibirás un mensaje de error de suma si algunos campos quedan en blanco.

Comments are closed.