Rellenar espacios vacíos en excel con vba.

La duda es como le hago para llenar espacios vacíos de una tabla por fila; con un combobox activex; ya que va cambiando la fila que quiero rellenar los espacios con una letra del combobox. Espero darme a entender.

Con este código solo solo rellena de B3:F3.

con esto despliego el combobox

2 Respuestas

Respuesta
1

Con esto rellenas los espacios vacíos como ves es mucho menos código del que estas usando

Private Sub ComboBox1_Change()
Range("b2").CurrentRegion.Replace What:="", Replacement:=ComboBox1.Value
End Sub

lo que hace es que lee todo la informacion de la hoja partiendo de la celda b2 y se detiene hasta que encuentra una fila o columna vacia, si detecta filas o columnas con espacios en blanco los reemplaza con el valor que eligas del combobox

Gracias por la pronta respuesta: lo que pasa es que en cada fila se llena con una letra diferente y con este ejemplo que me mandas llena todos los espacios con la misma letra.

se va llenando cada fila con una la letra diferente del combobox

¿Y cuál es la lógica para sabe que letra va ane cada fila?, ¿En la fila 4 por ejemplo cual es la condicional para que sea C?

Hola gracias por la ayuda pero no lleva una lógica  puede ser una letra o un número. Es llenar los espacios vacíos para no estar tecleando la misma letra o número .

Esta macro recorre las filas buscando los espacios vacíos en cuanto encuentra una fila con celdas vacías la rellena con la letra que selecciones en el combobox y se sale esperando que selecciones la siguiente letra.

Private Sub ComboBox1_Change()
Set datos = Range("b2").CurrentRegion
With datos
    filas = .Rows.Count
    For i = 1 To filas
        cuenta = WorksheetFunction.CountBlank(.Rows(i))
        If cuenta > 0 Then
            Range(.Rows(i).Address).Replace what:="", replacement:=ComboBox1.Value
            Exit For
        End If
    Next i
End With
Set datos = Nothing
End Sub
Respuesta
1

Estaba mirando las "PREGUNTAS ESPERANDO RESPUESTA" y aparece esta. Eso lo puedes lograr con una sola línea de código, así:

Private Sub ComboBox1_Change()
Range(Cells(ActiveCell.Row, 2), Cells(ActiveCell.Row, 6)).SpecialCells(xlCellTypeBlanks).Value = ComboBox1.Value
End Sub

Range(Cells(ActiveCell.Row, 2), Cells(ActiveCell.Row, 6))

Esa línea significa el Rango de B a F de la fila activa en el momento.

¡Gracias!  muchas gracias es lo que quería.

Gracias: a todos por tomarse un momento para ayunar  con nuestras dudas raras que nos salen Gracias. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas