Al hilo de este post del blog (leer), un lector planteaba la siguiente cuestión:
La idea sería completar las celdas vacías, sin contenido y sin color de fondo verde!!.
Para ello redefiniremos la macro del post anterior, incorporándole un condicional IF THEN que controle dicha situación...
Insertamos nuestro código en un módulo estándar de nuestro proyecto de VBA desde el editor de VB:
Tras lanzar nuestro procedimiento este es el resultado obtenido:
| Hola buenas noches! Excelente post! ojalá me pueda ayudar, tengo una tabla en excel y rellene algunas celdas de color verde (estas son salteadas), quiero saber si hay forma de rellenar las que están en blanco de otro color. Muchas gracias por su atención. |
La idea sería completar las celdas vacías, sin contenido y sin color de fondo verde!!.
Para ello redefiniremos la macro del post anterior, incorporándole un condicional IF THEN que controle dicha situación...
Insertamos nuestro código en un módulo estándar de nuestro proyecto de VBA desde el editor de VB:
Sub RellenaCeldasenBlanco()
Dim hoja As Worksheet
Dim UltFila As Long
Dim Rng As Range
Set hoja = Sheets("Hoja1")
With hoja
'Encontramos la última fila con valores
UltFila = .Range("A" & .Rows.Count).End(xlUp).Row
'creamos el rango
Set Rng = .Range("A1:A" & UltFila)
End With
'contador para determinar si es o no la primera celda vacía
x = 0
'recorremos el rango completo de estudio
For Each celda In Rng
'controlamos cada celda, si está o no vacía y si además el color de fondo es el Verde
If celda.Value = "" And celda.Interior.Color <> 5287936 Then
'si son afirmativas ambas condiciones aumentamos el contador
x = x + 1
'distinguimos el caso si fuera la primera celda o siguientes
'creamos un concatenado tipo texto con las referencias de las celdas
If x = 1 Then
Rng2 = celda.Address
Else
Rng2 = celda.Address & "," & Rng2
End If
End If
Next celda
'finalmente seleccionamos el rango compuesto y ejecutamos la acción de Rellenar celdas vacías
Range(Rng2).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C+1"
'liberamos las variables de objeto
Set hoja = Nothing
Set Rng = Nothing
End SubTras lanzar nuestro procedimiento este es el resultado obtenido:




Hola Ismael espero te encuentres bien, requiero de tu ayuda en esta oportunidad ya que necesito hacer que una macro cree un libro nuevo pegue algunos valores y lo guarde, el tema es que el nombre del archivo seria algo así: "Produccion_26102015", siendo la fecha dinámica para cada día o cada vez que se solicite dicha acción, pero al incluir en el nombre el rango de la celda me arroja un error (error en el metodo 'Save as' de objeto _Workbook y no me deja avanzar... Adjunto linea involucrada de la rutina...
ResponderEliminary de antemano muchas gracias por tu siempre valiosa colaboración...
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\irvic.rauseo\Desktop\LINIO\Produccion\" & Range("N4").Text & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Hola Irvic,
Eliminarhe replicado el proceso y me confirma lo que veía.. la sentencia es correcta (y funciona bien); asi que lo único que puede fallar es:
1- la ruta es incorrecta
2-el nombre del fichero en N4 tiene algún caracter raro.
Saludos
Hola Ismael tienes razón anoche después de tanto buscar por Internet y al obtener tu respuesta revise y pues corregí el error, muchas gracias...
Eliminar;-)
EliminarUn saludo
se detene en el If celda.Value = "" And celda.Interior.Color <> 5287936 Then
ResponderEliminarHola Miguel
Eliminarqué tal estás?, un placer saludarte igualmente...
Revisa el código, ya que no hay nada en esa línea que impida su ejecución..
quizá haya algún tipo de error en las celdas...
Saludos