Cómo hacer que la macro busque hacia la derecha hasta que encuentre una celda vacía
La siguiente macro nos permite dividir un rango e.g. 0002-0015 en sus valores únicos copiando éstos, junto con los datos asociados (presentes en la columna "A"), en una Hoja2. También nos permite ingresar un valor máximo de los resultados a mostrar.
Sub DividirValorConLimiteyColumna()
'Por.Dante Amor
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set h1 = Sheets("Hoja1")
'Set h2 = Sheets.Add(after:=Sheets(Sheets.Count))
Set h2 = Sheets("Hoja2")
h2.Cells.Clear
'
num = InputBox("Límite máximo del valor, o escribe 0 para todas", "INGRESA UN NÚMERO")
If num = "" Then Exit Sub
If Not IsNumeric(num) Then Exit Sub
num = Val(num)
For c = 1 To h1.Cells(1, Columns.Count).End(xlToLeft).Column Step 2
k = 1
For i = 1 To h1.Cells(Rows.Count, c).End(xlUp).Row
valor = Split(h1.Cells(i, c + 1), "-")
n = Val(valor(0))
If LBound(valor) = UBound(valor) Then
m = n
Else
m = Val(valor(1))
End If
If num > 0 And num < m Then
m = num
End If
If k + m > h1.Rows.Count Then
MsgBox "Se alcanzó el límite de la hoja"
Exit Sub
End If
For j = n To m
h2.Cells(k, c) = h1.Cells(i, c)
h2.Cells(k, c + 1) = j
k = k + 1
Next
Next
Next
Application.ScreenUpdating = True
h2.Select
MsgBox "División de valores terminada", vbInformation
End SubActualmente la macro busca los rangos a dividir en la columna "B" de la Hoja1 pero me gustaría saber qué código debo introducir y dónde para que busque también en las siguientes columnas (hacia la derecha) hasta que encuentre una celda vacía.
Nota: el número de celdas con rangos varía según la línea pero siempre empiezan en la columna "B".
2 respuestas
Respuesta de Dante Amor
1
Respuesta de Programar Excel
