Buscar un valor en la misma columna de cada hoja del libro de excel para usarlo en una macro

Estoy necesitando encontrar usando una macro, una coincidencia en el valor de una celda dentro de un rango específico y agregar un valor en en la misma fila de la coincidencia, usare un formulario con dos textboxex y un botón... Tengo esto:

Private Sub CommandButton1_Click()
Dim x As String
Dim found As Boolean
Range("B9").Select
x = TextBox1.Value
y = TextBox2.Value
found = False
    Do Until IsEmpty(ActiveCell)
    If ActiveCell.Value = x Then
    found = True
    Exit Do
    End If
    ActiveCell.Offset(1, 0).Select
      Loop
      If found = True Then
         ActiveCell.Offset(0, 3).Select
         ActiveCell.FormulaR1C1 = TextBox2.Value
      Else
         MsgBox "Valor no encontrado"
      End If
End Sub

funciona bien pero lo que necesito es que mi rango de búsqueda no sea sólo en una hoja sino en todas las hojas del libro (ha de considerarse que el valor en dicha columna jamas se repite en ninguna hoja y si eso pasara sólo necesito que tome en cuenta la primera coincidencia) 

No se si lo lógico es usar el método find para eso pero no se bien como hacerlo...

Otra cosa es que no quisiera que se note que el formulario hace ésta operación, es decir no se si se puede o si lo ideal es que deba usar "ScreenUpdating = False" o existe algo mas que pueda hacerse aparte de eso para la orden sea un paso secreto, esto es porque luego quisiera aplicarlo otro formulario que hace mas tareas...

1 Respuesta

Respuesta
2

H o l a:

Te anexo la macro para buscar en todas las hojas. Actualiza en la hoja donde haya encontrado el valor; y no es necesario utilizar screenupdating, ya que la macro utiliza el objeto b para actualizar la hoja, en el objeto b está el resultado de la función Find.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    For Each h In Sheets
        u = h.Range("B" & Rows.Count).End(xlUp).Row
        Set b = h.Range("B9:B" & u).Find(TextBox1, lookat:=xlWhole)
        If Not b Is Nothing Then
            b.Offset(0, 3) = TextBox2
            existe = True
            Exit For
        End If
    Next
    If existe Then
        MsgBox "Valor Actualizado", vbInformation
    Else
        MsgBox "Valor no encontrado", vbExclamation
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas