Contador para cantidad de líneas en hoja excel

Estas líneas de código la cogí de un tema respondido por Elsamatilde de la cual necesito su ayuda

cant1 = Range("A" & Rows.Count).End(xlUp).Row
cant2 = Application.WorksheetFunction.CountA(Range("A1:A" & cant1))

Eso, un contador en determinada celda, digamos que en O 2. Para insertar a un boton CommandButton

Que cuente la cantidad de líneas usadas que entremedia tienen líneas NO usadas; ejemplo

Línea 1 desde A1 hasta L1 Títulos

En A existe A2 ocupada, A3 y A4 libres. En A5 ocupada, A6, A7, A8 y A9 libres, ¿esto por qué?

http://i59.tinypic.com/4s0k5l.jpg

[IMG];

Se puede observar que entre cada cliente o factura, desde A hasta G es un solo cliente.

Desde H hasta K, estan los productos, su valor individual. L y M IVA y Total.

Existe entre cada factura, una línea de separación para una mejor identificación de cada factura

La captura es decriptiva y buen exponente.

Seguidamente haré nuevo tema cuyo titulo será "Contador para líneas en Columna B

Si necesitas el libro o solo las hojas te lo envío

1 respuesta

Respuesta
1

Si tu necesidad es colocar un botón de comando para que en celda O2 te calcule la cantidad de celdas utilizadas en col A, estos serían los pasos.

-Entrá al Editor, insertá un módulo y allí copiá este código:

Sub Botón1_Haga_clic_en()
'x Elsamatilde
Dim cantx As Long
'muestra en O2 la cantidad de celdas ocupadas en col A
cantx = Application.WorksheetFunction.CountA(Range("A:A"))
'Opcional: restar 2 celdas ocupadas con títulos
cantx = cantx - 2
'colocar total de facturas en O2
Range("O2") = cantx
End Sub

-Ahora en la hoja Excel: dibujar un botón de Formulario (menú Programador, Ficha Controles, Insertar, seleccionar el control, dibujarlo en la hoja).

- Se te mostrará una ventana donde debes seleccionar la macro y Aceptar

- La celda O2 debe estar desbloqueada para recibir este total.

Dejo como opción que restes las celdas que pudieran ser de título para obtener solo el total de facturas.

Sdos. Cuando finalices esta consulta seguiré con la otra que veo aún pendiente.

Elsa

Disculpa, el encabezado de la macro debe ser así:

Sub cuentaFact()

Sdos!

Hola Elsamatilde. Gracias por tu colaboración desinteresada com osiempre. Mil gracias

Cambie de O2 a B20 para mejor visualizar el numero que la macro marca sobre facturas existentes en la hoja. Luego le doy destino final y definitivo, aun sea por medio de un MsgBox, no des importancia a este punto

Quiero dejarte dicho que la macro funciona pero tengo en la hoja 4 facturas, (dejo imagen) y me dice la macro que tengo 3.

No se si lo correcto será cambiarle en la linea cantx = cantx - 2 cambiar a cantx = cantx - 1

Me dice que si tengo 4 que son las existentes

Como puedes observar, donde se ve 6 con la línea tuya me da 5 y cambiando a cantx = cantx - 1 me da la cantidad de facturas existentes.

Responde APROBADO o reprobado y si es la ultima, dime cual seria entonces.

Cuanto al otro tema espero respondas algo porque tengo la solución, CREO,

Al menos me funciona contando las líneas que tengo en la hoja que no es como esta, si no que los datos en esa hoja son continuos, sin intermedias vacías.

Sub Cont_Factura()
'x Elsamatilde
Dim cantx As Long
Dim canth
'muestra en E20 la cantidad de celdas ocupadas en col A
cantx = Application.WorksheetFunction.CountA(Range("B:B"))
'Opcional: restar 2 celdas ocupadas con títulos
cantx = cantx - 1
'colocar total de facturas en O2
Range("c18") = cantx
    'mensage de advertencia
    canth = Application.WorksheetFunction.CountA(Range("h:h"))
       CreateObject("wscript.shell").Popup _
        "Facturas existentes: = " & cantx & vbCr & vbCrLf & " Linea a ocupar: = A" & canth, 2
End Sub

Como verás le agregue un mensage, me funciona EN PARTE, ¿que no funciona?

El mensaje debería darme la línea A25 a ocupar según la imagen que ves arriba

Y me da otra muy antes de A25

¿Qué está mal? ¿En la line adel mensaje?

Si prefieres, desopues crio un nuevo tema para esto, aunque respondas a esta interrugante también

Parece haber dado con la solución

Sub Cont_Factura()
'x Elsamatilde
Dim cantx As Long
Dim canth As Long
'muestra en E20 la cantidad de celdas ocupadas en col A
cantx = Application.WorksheetFunction.CountA(Range("A:A"))
'Opcional: restar 2 celdas ocupadas con títulos
cantx = cantx - 1
'colocar total de facturas en O2
'Range("E20") = cantx
    'mensage de advertencia
        canth = Range("h" & Rows.Count).End(xlUp).Row + 2
    'canth = Application.WorksheetFunction.CountA(Range("h:h"))
    canth = canth - 1
       CreateObject("wscript.shell").Popup _
        "Facturas existentes: = " & cantx & vbCr & vbCrLf & " Proxima factura: = A" & canth + 1, 12
End Sub

Dime si esta cierto o no para calificar

No se ve en la imagen el encabezado de filas como para saber dónde empiezan los datos. En mi ejemplo, donde coloqué:

'Opcional: restar 2 celdas ocupadas con títulos
cantx = cantx - 2

Le resté 2 porque mis datos empezaban en fila 3... eso es todo lo que tenés que revisar y ajustar. La función suma todas las celdas CON DATOS... lo que debes restar son los datos que no son facturas... y nada más.

Sdos!

Gracias Elsamatild

La verdad es que los datos empiezan en la línea 2, la 1 es títulos, por eso la resta de 1 y no 2.

Pasamos al otro tema para que veas lo que hice antes de darme tu una solución pero, para ello tienes que responder algo para que yo pueda comentar.

Quisiera aclarar solo un detalle en tu ultima macro (que es la correcta. Restando las filas de encabezados).

En el agregado, mostrando el mensaje de advertencia:

- Obtenés la primer fila con canth

- Luego le restas 1

- Luego le sumas 1 en el mensaje

Es decir que el valor correcto es canth... ni le restes 1 ni le sumes 1... así que RETIRA esta línea: canth= canth-1

Y en el MENSAJE solo mostrá: A & canth, 12 ...

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas