Alguien podría decirme por qué no funciona esta línea de código con SumIfs

Estas líneas de código son parte de una macro y no sé por que no funcionan, ahí van;

TextoOT = FormOpciones.ComboOTS.Text
TextoOP = FormOpciones.ComboOperaciones.Text
For no = 1 To 10
uf = Sheets(no).Range("A" & Rows.Count).End(xlUp).Row
Sumaif = Application.WorksheetFunction.SumIfs(Sheets(no).Range("H2", "H" & uf), (Sheets(no).Range("C2", "C" & uf)), _
TextoOT, (Sheets(no).Range("J2", "J" & uf)), TextoOP)
Next no
FormOpciones.LabTerm.Caption = Sumaif

La variable Sumaif siempre me devuelve cero. ¿Por qué?

Respuesta
1

[Hola

Coloca el archivo en algún "Drive" (Google Drive, OneDrive, DropBox, etc.) de tal modo que se pueda ver directamente el dilema. Si consideras que tus datos son privados, cámbialos pero mantén el mismo orden y tipo de datos para poder analizar el problema.

Saludos]

Abraham Valencia

Hola Abraham, gracias por responder, en cuanto a la macro, la verdad es que aparte de la declaración de variables no tiene mucho más, he comprobado que se cumplen las dos condiciones "TextoOT" y "TextoOP" en las columnas "C" y "J" pero sigue sin sumar en la columna "H". 

[Hola nuevamente

Era importante ver para analizar más a fondo ya que, por ejemplo, dices que no ves/detectas nada anormal pero se da el error, por lo tanto, algún dilema hay y sin ver los datos, solo queda, casi adivinar, lo que conllevará a alargar la conversación y siendo esto de los foros algo ad honorem, casi todos brindamos nuestros (pocos) tiempo libres que no necesariamente dan para conversaciones largas.

Si tus criterios son números o fechas, no olvidar que para VBA los "TextoOT" y "TextoOP" tienen texto; si tus criterios son texto o alfanuméricos, basta un espacio demás (al inicio o al final de las palabras) en los textbox para que de cero; si en tu hoja 10 el resultado es cero, siempre en el Label el resultado será cero pues es el único resultado que muestras, tu bucle recorre las hojas sin mostrar los resultados de las hojas 1 a la 9; etc.

Abraham Valencia

1 respuesta más de otro experto

Respuesta
1

Este es el resultado de unas modificaciones que hice a tu macro como ves ya da un resultado

y esta es la macro

Private Sub CommandButton1_Click()
With FormOpciones
    textoot = Val(.ComboOTS.Text)
    textoop = Val(.ComboOperaciones.Text)
End With
filas = Range("a1").CurrentRegion.Rows.Count
Set datos = Range("a2").Resize(filas - 1, 10)
With datos
    sumar_si = WorksheetFunction.SumIfs(.Columns(8), .Columns(3), textoot, _
    .Columns(10), textoop)
    FormOpciones.LabTerm.Caption = sumar_si
End With
Set datos = Nothing
End Sub

Ignora la macro anterior me falto agregarle el ciclo for

With FormOpciones
    textoot = Val(.ComboOTS.Text)
    textoop = Val(.ComboOperaciones.Text)
End With
cuenta = Worksheets.Count
For no = 1 To cuenta
with Sheets(no)
    filas = .Range("a1").CurrentRegion.Rows.Count
    Set datos = .Range("a2").Resize(filas - 1, 10)
end with
With datos
    sumar_si = WorksheetFunction.SumIfs(.Columns(8), .Columns(3), textoot, _
    .Columns(10), textoop)
    FormOpciones.LabTerm.Caption = sumar_si
End With
Next no
Set datos = Nothing

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas