Modificación de código de macro en excel

Tengo el siguiente código:

Sub buscar_reemplazar_colorear()
Set xDATOS = Range("a1:dd40").CurrentRegion
Set lista = Range("dj2").CurrentRegion
MATRIZ = xDATOS
With lista
For i = 1 To .Rows.Count
numeros = .Cells(i, 1)
cuenta = WorksheetFunction.CountIf(xDATOS, numeros)
If cuenta > 0 Then
For j = 1 To cuenta
If j = 1 Then Set busca = xDATOS.Find(numeros, LookAt:=xlWhole)
If j > 1 Then Set busca = xDATOS.FindNext(busca)
celda = busca.Address
With Range(celda)
.Value = lista.Cells(1, 1)
.Interior.ColorIndex = 44
.Select
End With
Next j
Else
GoTo SIGUIENTE
End If
ASK = MsgBox("DEJAR TODO COMO ESTABA?", vbYesNo, "AVISO")
If ASK = 7 Then GoTo SALIDA
Range(xDATOS.Address) = MATRIZ
SIGUIENTE:
Next i
End With
SALIDA:
End Sub

Al ejecutarlo en cualquier hoja me funciona pero ahora que tengo un formulario NO MODAL me ejecuta un error en la línea de negrita como puedo solucionarlo ya que esta macro busca aquellos números que están en la columna dj en el rango a1 :dd40

2 respuestas

Respuesta
2

Esta consulta está duplicada y te acabo de responder en la otra entrada.

El problema no está en el modelo del formulario sino en el formato de los datos entre la col y la tabla o matriz.

Sdos!

Disculpa James, pero sí tiene que ver con el formato porque los números en realidad sí están solo que no se los encuentra.

Está buscando un dato que es el nro 6

Y en la matriz a veces aparece como texto '6 y otras aparece como 0006

Por eso se debe convertir al formato de la matriz (hay varios modos de comparar números de distinto formato)

Y esos números sí deben tenerse en cuenta (según así se lo entendí al usuario) y no pasarlos por alto.

Sdos!

Respuesta
1

Ya te envíe la solución por email te menciones que eso pasa cuando la búsqueda no encuentra ningún dato que coincida y te di la solución que es la siguiente

On Error Resume Next
celda = busca.Address
If Err.Number > 0 Then MsgBox ("NUMERO " & NUMEROS & " NO ENCONTRADO"), vbInformation, "AVISO": GoTo SIGUIENTE
On Error GoTo 0

La macro detectara el error y se saltara al siguiente registro después de avisarte que no encontró el dato.

Y no tiene nada que ver ni con el formato ni con el formulario simple y llanamente no puede mostrar algo que no encuentra.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas