¿Che, cómo andas? Estaba mirando y veo que andas volando, puedo consultarte...

=BUSCARV(G4;'Base de datos'! A2:H1704;6) tengo esa fórmula, hace referencia a la casilla g4( donde se inserta un odigo para buscar datos en la segunda hoja de la planilla y me tira unos datos, entre otros la fecha de la ultima consulta, estoy intentando que luego que me de esos datos, con un botón me ingrese la fecha de la consulta, sin tener que modificar a mano en la otra hoja, logre poner la macro pero sin que me deje modificar solo ese campo, ¿me podrías orientar un poco mejor?

1 Respuesta

Respuesta

.18/10/16

Hola, Matías

Me tomé el atrevimiento de contestar esta pregunta aunque no sé muy bien a quién se la dirigias.

Pero bueno, a esta hora...

Si te hubiera entendido correctamente, el siguiente código deja en la base la última vez que se consultó, supuesto -claro está- que se haya ejecutado la macro con aquel botón.

Accede al Editor de VBA (Atajo: Alt + F11), allí inserta un módulo (Insertar-Módulo) y pega el siguiente código:

Sub ConsUltima()
'---- Variables modificables:
'=== MATIAS, modifica estos datos de acuerdo a tu proyecto:
CelDato = "G4" 'donde genera el código
HojaBase = "Base de datos" 'Hoja donde está la base
ElRango = "A2:H1704" 'Columna donde acumula los datos. Al principio tendrá sólo el título
Col = 6 'Columna donde debe dejar la fecha-hora de la última búsqueda
'---- fin Variables
'
'---- inicio de rutina:
'  
ActiveSheet.Calculate
RangoBusq = Range(ElRango).Columns(1).Address
Buscar = Range(CelDato).Value
On Error Resume Next
Encontrado = Sheets(HojaBase).Range(RangoBusq).Find(What:=Buscar, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns).Address
If Len(Encontrado) > 0 And Len(Buscar) > 0 Then
    Sheets(HojaBase).Range(Encontrado).Offset(0, Col - 1).Value = Now()
    Sheets(HojaBase).Range(Encontrado).Offset(0, Col - 1).Interior.ColorIndex = 20
Else
    ElMensaje = "El código " & IIf(Len(Buscar) > 0, Buscar, "<sin dato>") & " de la celda: " & CelDato & Chr(10) & _
    "no fue encontrado en el rango " & ElRango & " de la hoja " & HojaBase & Chr(10) & "No se hizo acción alguna."
    ElTitulo = "NO SE ENCUENTRA ESE VALOR!"
    TipoMens = vbCritical
    MsgBox ElMensaje, TipoMens, ElTitulo
End If
Err.Clear
On Error GoTo 0
End Sub

Respeté las direcciones que diste y están ya dentro de algunas variables que dejé al principio, por si -eventualmente- quieres cambiarlas.

Como la rutina modifica datos en tu base, conviene que la pruebes sobre una copia de ese archivo/hoja, al menos hasta que estés seguro que hace lo que deseas.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas