Buscar repetidos entre hojas y resaltarlos

Tengo 6 hojas de un libro de excel y quiero compararlas de 2 en 2 para eso necesito un formulario

Que me de la opción de escoger cuales hojas del libro necesito comparar y resaltar los números repetidos que se encuentre entre las dos

Tengo esta parte del código que lo hace pero necesito instalarlo en un formulario con la opción de escoger las hojas que necesito analizar

Sub colorear()
'ajustada x Elsamatilde
inicio = Time
Set ha = Worksheets("resultados").Range("a1:ab80")
Set hn = Worksheets("probables").Range("a1:cy42") 'controlar rango
For i = 1 To hn.Cells.Count
'si la columna es par se omite
If hn.Cells(i).Column Mod 2 = 0 Then GoTo SALIDA
numero = hn.Cells(i)
cuenta = WorksheetFunction.CountIf(ha, numero)
If cuenta > 0 Then
For j = 1 To cuenta
If j = 1 Then Set busca = ha.Find(numero)
If j > 1 Then Set busca = ha.FindNext(busca)
On Error Resume Next 'si no se encuentra busca se omite el error
Celda = busca.Address
If Worksheets("resultados").Range(Celda).Interior.ColorIndex = xlNone Then
Worksheets("resultados").Range(Celda).Interior.ColorIndex = 6
End If
Next j
End If
SALIDA:
Next i
fin = Time: minutos = fin - inicio
MsgBox ("duro " & Minute(minutos) & " minutos")
Set ha = Nothing: Set hn = Nothing
End Sub

Respuesta
1

Esto te puede aportar algo más

https://www.programarexcel.com/2014/10/macro-recorre-filas-busca-dato-y.html 

Visita https://programarexcel.com

1 respuesta más de otro experto

Respuesta
1

¿Algo así es lo que quieres hacer?

Arma un formulario como lo ves en la imagen

Dentro del mismo pega esto

Private Sub ComboBox1_Change()
selhoja = ComboBox1.Value
Worksheets(selhoja).Select
End Sub
Private Sub CommandButton1_Click()
inicio = Time
Set ha = Worksheets(ComboBox1.Value).Range("a1:ab80")
Set hn = Worksheets(ComboBox2.Value).Range("a1:cy42") 'controlar rango
For i = 1 To hn.Cells.Count
'si la columna es par se omite
If hn.Cells(i).Column Mod 2 = 0 Then GoTo SALIDA
numero = hn.Cells(i)
cuenta = WorksheetFunction.CountIf(ha, numero)
If cuenta > 0 Then
For j = 1 To cuenta
If j = 1 Then Set busca = ha.Find(numero)
If j > 1 Then Set busca = ha.FindNext(busca)
On Error Resume Next 'si no se encuentra busca se omite el error
Celda = busca.Address
If Worksheets("resultados").Range(Celda).Interior.ColorIndex = xlNone Then
Worksheets("resultados").Range(Celda).Interior.ColorIndex = 6
End If
Next j
End If
SALIDA:
Next i
fin = Time: minutos = fin - inicio
MsgBox ("Duro " & Minute(minutos) & " minutos")
Set ha = Nothing: Set hn = Nothing
End Sub
Private Sub UserForm_Initialize()
For Each Hoja In Worksheets
ComboBox1.AddItem Hoja.Name
ComboBox2.AddItem Hoja.Name
Next
End Sub

para que los ComboBox te dejen elegir solo las hojas que tiene cargadas y no te deje escribir para evitar errores haz click en cada ComboBox y busca en propiedades la opcion "Style" por defecto dice "fmStyleDropDownCombo" cambiala en los 2 por "fmStyleDropDownList"

despues creas un modulo y adentro pegas esto

Sub VerForm()
UserForm.Show
End sub

si quieres agregar un boton para que el formulario se cierre

agrega un boton y dentro del mismo pega esto

Sub CerrarForm()

End

End sub

Me olvidaba te agregue una función dentro del ComboBox1

Private Sub ComboBox1_Change()
selhoja = ComboBox1.Value
Worksheets(selhoja).Select
End Sub

para que cuando eligas una hoja excel active la misma, sino la necesitas puedes borrarla que igual tu macro seguira funcionando sin problemas...

Tu macro igual va a tomar la hoja que elegiste en el combox sin importar si estas o no sobre ella

Maestro sebastián me sale este error

userform.show

Algún correo para enviar mi trabajo

O si no agregueme [email protected]

"UserForm" es el nombre del formulario y "show" es la acción que se usa para que se ejecute

Tu tienes que fijarte que nombre tiene tu formulario y ese nombre es el que vas a poner en la macro para que se ejecute

Ejemplo si tu formulario se llama BuscarArchivos

En la macro tienes que poner

BuscarArchivos.show

Siempre tiene que ir tal cual el nombre sino no lo reconoce

Te dejo la siguiente imagen para dejártelo más claro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas