Ayuda

Hola Fer:
¿Por favor me podrías ayudar con este código? Mira puedo grabar y Buscar en la Hoja que se llama (SalMin)pero no lo puedo visualizar en un formulario, tengo que estar en la hoja (SalMin) para poder ver lo que contiene la hoja y visualizarla por medio de TextBox, lo que me gustaría es que yo pudiera estar en cualquier otra hoja y poder ver el contenido de ciertas lineas... Todo funciona bien esta donde te marco... O señalo,,,
Private Sub Aceptar_Click()
With Worksheets("SalMin").Range("A:A")
Set c = .Find(what:=txtAno, LookIn:=xlFormulas)
If Not c Is Nothing Then
Range(c.Address).Select
s = MsgBox("Este año ya ha sido capturado, Deseas Modificarlo?", vbYesNo + vbQuestion, "Opcion")
If s = vbYes Then
Aceptar.Visible = False
(AQUI) Tengo que estar en esta hoja para que funcione...........
txtAno = ActiveCell.FormulaR1C1
ActiveCell.Next.Select
txtZonaA = ActiveCell.FormulaR1C1
ActiveCell.Next.Select
txtZonaB = ActiveCell.FormulaR1C1
ActiveCell.Next.Select
txtZonaC = ActiveCell.FormulaR1C1
Modificar.Visible = True
Else
End If
Else

1 Respuesta

Respuesta
1
Recién vuelto de mi fin de semana, vi tu consulta.
Si la entendí correctamente tu pedido, la siguiente macro modificada, hace lo que requieres desde cualquier hoja que tengas seleccionada:
Private Sub Aceptar_Click()
Dim c As Range 'faltaba
With Worksheets("SalMin").Range("A:A")
Set c = .Find(what:=txtano, LookIn:=xlFormulas)
End With 'faltaba
If Not c Is Nothing Then
'Range(c.Address).Select ' anulé, porque estás instruyendo que seleccione la celda donde encontró el dato.
s = MsgBox("Este año ya ha sido capturado, Deseas Modificarlo?", vbYesNo + vbQuestion, "Opción")
If s = vbYes Then
Aceptar.Visible = False
'(AQUÍ) estas instrucciones, leen desde la celda donde encontró el año los datos en las columnas subsiguientes hacia la derecha
'como parecía que hacía tu macro:
txtano = c.Offset(0, 0).Value
txtZonaA = c.Offset(0, 1).Value
txtZonaB = c.Offset(0, 2).Value
txtZonaC = c.Offset(0, 3).Value
Modificar.Visible = True
End If
End If
Set c = Nothing 'faltaba
End Sub
Notarás que le agregué una serie de comentarios a aquellos comandos que tuve que agregar, modificar o anular.
Básicamente, el problema estaba en que con:
Range(c.Address).Select
Estás seleccionando la celda (y la hoja) donde encontró lo que buscaba.
Anulé esa instrucción y uso la referencia del rango donde encontró el dato ("c") para tomar las celdas que se encuentren a su derecha y cargarlas en las variables que indicaste.
Notarás que en ningún momento de la ejecución de la macro se produce selección de hoja o celda alguna.
Pruébalo y dime si es lo que buscabas.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas