Como detectar cambios en textbox o evitar filas en blanco

Tengo una macro que me va buscando nombres para luego mostrarlo en un textbox, por lo que entiendo la macro toma todos los valores dentro de un rango incluyendo las celdas en blanco, lo cual provoca que cuando le de "click" en un botón para que cambie, al encontrar filas en blanco, pues visualmente se ve como si no pasara nada, y tengo que darle click hasta que la macro encuentre una fila con datos o nombre, para evitar esto se me ocurre hacer que " si el textbox1 no tiene cambio, vuelva a ejecutar la macro hasta que haya algún cambio.

Desde mi poca experiencia se me ocurre eso como mecanismo para evitar filas en blanco, si se pudiera modificar la macro también seria válido, el objetivo es que cuando presione el botón, si o si me encuentre un nombre o fila con datos.

Private Sub CommandButton9_Click()
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
Sheets("bd").Unprotect Password:="Dr4gOnnike01(_0)x-+dass@LOL@#=)$#LFMAO"
Sheets("C. FILIACION").Unprotect Password:="Dr4gOnnike01(_0)x-+dass@LOL@#=)$#LFMAO"

inicio:

Dim xSource, xDestination As Range
Set xSource = Sheets("C. FILIACION").Range("B13:B57")
Set xDestination = Sheets("BD").Range("AF1:AF45")
ReDim xRandoms(1 To xSource.Rows.Count)
destrow = 0
For k = 1 To xDestination.Rows.Count
If xDestination(k) = "" Then: destrow = k: Exit For
Next k
If destrow = 0 Then: MsgBox "Los elegidos estan listos para responder, sino elige nuevos": Exit Sub
For k = 1 To UBound(xRandoms): xRandoms(k) = Rnd(): Next k
kpick = 0: xtries = 0
Do While kpick = 0 And xtries < UBound(xRandoms)
xtries = xtries + 1
xminrnd = WorksheetFunction.Min(xRandoms)
For k = 1 To UBound(xRandoms)
If xRandoms(k) = xminrnd Then
selected_past = False
For m = 1 To destrow - 1
If xSource(k) = xDestination(m) Then: selected_past = True: xRandoms(k) = 1: Exit For
Next m
If Not selected_past Then: kpick = k
Exit For
End If
Next k
Loop
If kpick = 0 Then: MsgBox "oh, terminamos de elegir a los suertudos!!": Exit Sub
xDestination(destrow) = xSource(kpick)
Calculate
TextBox7.Value = Worksheets("BD").Range("AH1").Value
TextBox6.Value = Worksheets("BD").Range("AJ1").Value

'If TextBox1 = "" Then 
'GoTo inicio
'End If

Set h1 = Sheets("bd")

TextBox1.Value = Worksheets("BD").Range("AF1").Value
TextBox2.Value = Worksheets("BD").Range("AF2").Value
TextBox3.Value = Worksheets("BD").Range("AF3").Value
TextBox4.Value = Worksheets("BD").Range("AF4").Value
TextBox5.Value = Worksheets("BD").Range("AF5").Value

If TextBox7 >= 5 Then

u = h1.Range("AF" & Rows.Count).End(xlUp).Row - 4
TextBox1 = h1.Range("AF" & u)
u = h1.Range("AF" & Rows.Count).End(xlUp).Row - 3
TextBox2 = h1.Range("AF" & u)
u = h1.Range("AF" & Rows.Count).End(xlUp).Row - 2
TextBox3 = h1.Range("AF" & u)
u = h1.Range("AF" & Rows.Count).End(xlUp).Row - 1
TextBox4 = h1.Range("AF" & u)
u = h1.Range("AF" & Rows.Count).End(xlUp).Row
TextBox5 = h1.Range("AF" & u)

End If

Calculate
End Sub

Como dato: los nombres van subiendo hasta desde textbox5 al textbox1 hasta que en faltones diga "0"

Añade tu respuesta

Haz clic para o