VBA, contar el número de filas no ocultas
Resuelto
rhalimi13
Mensajes publicados
23
Estado
Miembro
-
rhalimi13 Mensajes publicados 23 Estado Miembro -
rhalimi13 Mensajes publicados 23 Estado Miembro -
Bonjour,
Quiero contar el número de filas no ocultas y luego mostrar el resultado
Private Sub CommandButton3_Click()
Dim R As Long
Dim c As Integer
With Application.WorksheetFunction
If c.EntireRow.hiden = False Then
R = .CountA(Range("A3:A100"))
MsgBox ("hay " & R & " celdas no vacías en la columna A")
End With
End Sub
Quiero contar el número de filas no ocultas y luego mostrar el resultado
Private Sub CommandButton3_Click()
Dim R As Long
Dim c As Integer
With Application.WorksheetFunction
If c.EntireRow.hiden = False Then
R = .CountA(Range("A3:A100"))
MsgBox ("hay " & R & " celdas no vacías en la columna A")
End With
End Sub
27 respuestas
- 1
- 2
Siguiente
-
hola
Así debería funcionar mejorPrivate Sub CommandButton3_Click() Dim R As Double Dim l As Double For l = 1 To Cells(65536, 1).End(xlUp).Row If Not Rows(l).Hidden Then R = R + 1 Next l MsgBox ("hay " & R & " filas visibles en la columna A") End Sub
Se cuentan las filas visibles y no las celdas no vacías..
--
siempre zen -
¡Muchas gracias por tu solución!
Voy a trabajar en ello porque soy principiante en VBA.
¡GRACIAS OTRA VEZ! -
Francamente, tu solución funciona mejor que el programa que me dieron en un foro.
El tuyo solo cuenta los visibles, ¡eso es excelente!
Si tengo otro problema, ¿podrás ayudarme?
¡gracias! -
hola
Gracias por tu mensaje y ¿no es normal proporcionar código que corresponda a la necesidad?
Si tengo otro problema, ¿podrás ayudarme?
No hay problema, pero pronto serás tú quien ayude a los demás.
--
siempre zen -
Bonjour,
vuelvo a ponerme en contacto contigo, esperando no pedirte demasiado
aquí tengo un problema con inputBox, cuando hago clic en cancelar o si no ingreso nada en inputbox, VBA activa el depurador,
me gustaría que cerrara la inputbox si cancelo,
puedes ver, ¡MEEEERCI!
Private Sub CommandButton2_Click()
Range("a1:I30").Interior.ColorIndex = xlNone
Dim msg As Double
msg = InputBox("¿cuál es la media móvil?")
'If msg = "" Then Exit Sub
'Dim msg
'msg = InputBox
'If msg = vbCancel Then
'Exit Sub
'End If
Dim c As Range
For Each c In ActiveSheet.Range("a1:I30")
If c < msg And c <> "" Then
c.Interior.Color = RGB(168, 168, 168)
End If
Next
End Sub -
Hola
Te propongo gestionar así la cancelación:On Error Resume Next ' si hay error se pasa a la siguiente línea msg = InputBox("¿cuál es la media móvil?") If msg = 0 Then Exit Sub ' si se usa "Cancelar" se sale de la macro On Error GoTo 0 ' el control de error se restablece
También puedes hacerlo cambiando tu reservaDim msg As Variant msg = InputBox("¿cuál es la media móvil?") If msg = "" Then Exit Sub ' si se usa "Cancelar" se sale de la macro
--
siempre zen -
re
he probado lo que me diste, pero todavía tengo problemas, ya sea que inicie el depurador o me muestre el cuadro de entrada dos veces
mi ejercicio es colorear celdas inferiores al x%
gracias por tu ayuda -
hola
Te he dado 2 posibilidades: elige una u otra, no ambas.
Lo más simple es pasar "msg" variando.
--
siempre zen -
Hola de nuevo
He puesto 'msg' como variante, en la inputbox funciona perfectamente, pero por otro lado no me respeta la condición y me colorea todas las celdas, no intenta entender,
gracias. -
hola
Con esto, debería funcionar mejor.For Each c In ActiveSheet.Range("a1:I30") If c < Val(msg) And c <> "" Then c.Interior.Color = RGB(168, 168, 168) Else c.Interior.Color = xlNone End If Next
Cuando introduces un valor en el inputbox, es texto y por lo tanto hay que traducirlo a numérico para comparar.
En las fórmulas de Excel a veces lo hace, pero no en VBA.
También es más prudente decolorar si no se cumple la condición.
--
siempre zen -
Hola, acabo de hacer la prueba con
Val(msg) y On Error Resume Next, ¡FUNCIONA PERFECTO!
Entonces 'val', como me explicaste, traduce el texto a número (dado que es de un inputBox, eso es, si no me equivoco)
y 'On Error Resume Next' permite pasar a la siguiente línea si el usuario comete un error y escribe texto (por error de tipeo)
sin embargo, no hay necesidad del else, de lo contrario en el bucle me colorearía toda la zona de trabajo después de realizar la condición
de otro modo, me propusieron esto: If ((CDec(c.Value) < CDec(msg)) And (CStr(c.Value) <> "")) Then, no sé qué significa y al copiar y pegar, no funcionó
Solo me queda agradecerte y decirte hasta pronto
¡Que tengas un buen día! -
```vba
Private Sub CommandButton1_Click()
Dim var As Integer
var = 2
For var = 2 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(var, 2) > 100 Then
Range(Cells(var, 1), Cells(var, 2)).Font.Bold = True
End If
Next
End Sub
``` -
Hola
Con otro tipo de bucle tal vezPrivate Sub CommandButton1_Click() Dim var As Integer var = 2 Do While Cells(var, 1) <> "" If Cells(var, 2) > 100 Then Range(Cells(var, 1), Cells(var, 2)).Font.Bold = True End If var = var + 1 Loop End Sub
Vas avanzando tu índice de fila y te detienes si la celda está vacía: ¡a adaptar con tu tabla!
--
siempre zen -
Salut mon ami
de retour
je voudrais s'il te plaît
convertir une date (jj/mm/année) en semaine correspondante
merci -
Hola
Con el año en A1, esta fórmula es más eficiente que la función NUM.SEMANA que no es confiable en Europa, al menos.=ENTER(MOD(ENTER((A1-2)/7)+0,6;52+5/28))+1
--
El conocimiento es la única materia que aumenta cuando se comparte. (Sócrates) -
Hola,
¡pues gracias, gracias y gracias!
Porque pasé toda la noche de ayer, de 17:00 a 23:00 (por supuesto no de manera continua) y no encontré nada en Google.
¡Bien!
¿Puedes decirme cómo lo encontraste para que pueda mejorar mis conocimientos en informática?
¡Gracias de nuevo!
¡Que tengas un buen día!
¡Hasta pronto! -
bonjour,
puedes ayudarme por favor
me gustaría colorear las celdas según el contenido de la celda en la columna B
mi rango de datos es: "c2;l27", y mis condiciones están en la columna B
he realizado un código pero no funciona
aquí está:
Private Sub CommandButton1_Click()
Dim c As Range
Dim var As Integer
var = 2
For Each c In ActiveSheet.Range("c2:l27")
If c <> "" And Cells(var, 2) = mp Then
c.Interior.ColorIndex = 4
End If
var = var + 1
Next
If c <> "" And Cells(var, 2) = mc Then
c.Interior.ColorIndex = 3
End If
var = var + 1
If c <> "" And Cells(var, 2) = df Then
c.Interior.ColorIndex = 1
End If
var = var + 1
End Sub -
Hola
Si he entendido...Private Sub CommandButton1_Click() Dim c As Range Dim var As Integer var = 2 For Each c In ActiveSheet.Range("c2:l27") If c <> "" And Cells(c.row, var) = mp Then c.Interior.ColorIndex = 4 End If Next If c <> "" And Cells(c.row, var) = mc Then c.Interior.ColorIndex = 3 End If If c <> "" And Cells(c.row, var) = df Then c.Interior.ColorIndex = 1 End If End Sub
--
El conocimiento es la única materia que se incrementa al compartirla. (Sócrates)-
-
-
-
Hola
¡Uf, uf, uf, finalmente lo encontré! ¡¡¡!!!
Pues resulta que en el código que me retocaste, SIMPLE Y LITERALMENTE solo tenía que poner: mp, mc, df entre comillas:
If c <> "" And Cells(c.Row, var) = "mp" Then
If c <> "" And Cells(c.Row, var) = "mc" Then
If c <> "" And Cells(c.Row, var) = "df" Then
En mi opinión, los habías olvidado, jaja
¡UN MUY GRAN GRACIAS A TI!
Que tengas un muy buen día y nos vemos pronto. -
-
-
francamente, me respondiste, ¡estoy muy contento!
sí, eso es, en realidad quiero colorear mis celdas en el rango (Range("c2:l27")) según el contenido de las celdas de la columna b2
he recuperado tu código, pero no funciona,
por favor ayúdame, ¡gracias!
¿cómo puedo enviarte el archivo de Excel de otra manera? -
Si necesitas más explicaciones, estoy conectado, gracias
porque el código que me has enviado me parece muy correcto, pero ¿por qué no responde?
- 1
- 2
Siguiente