MsgBox

28/12/2004 - 10:51 por Luises | Informe spam
Buenos días.

Quiero que cuando una celda cambie me salga un mensaje MsgBox, pero no sé el
evento. ¿Alguien lo sabe?

Muchas gracias.

Preguntas similare

Leer las respuestas

#6 Luises
30/12/2004 - 10:24 | Informe spam
He probado el código que me has dicho. Me sale el error
"Variable de objeto o bloque With no establecido" en la línea "If .Text <>
.Comment.Text Then".

¿Tengo que crear un comentario inicialmente?




"KL" escribió en el mensaje
news:
Luises,

Prueba poner el codigo de abajo en el modulo de EsteLibro (ThisWorkBook).
Este codigo usa el Comentario para almacenar el ultimo valor de la celda
[A1] para luego poder validarlo cada vez q se produzcan cambios en las
hojas. Si la formula hace referencia a otro fichero, creo q habria q usar


el
evento Calculate en vez de Change.

Saludos,
KL

'--Inicio Codigo--
Private Sub Workbook_Open()
Call ActualizarComentario
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Target As Range)
With Sheets("Hoja1").Range("A1")
If .Text <> .Comment.Text Then
MsgBox "A1 ha cambiado de " & .Comment.Text & _
" a " & .Text
Call ActualizarComentario
End If
End With
End Sub

Sub ActualizarComentario()
With Sheets("Hoja1").Range("A1")
On Error Resume Next
.AddComment .Text
.Comment.Text .Text
End With
End Sub
'--Fin Codigo--


"Luises" wrote in message
news:%
> Muchas gracias, KL.
>
> En verdad, "que la celda cambie" significa que cambia el resultado de


una
> fórmula. Si no te cuesta mucho, ¿podrías decirme qué variación hay que
> hacer? Si ves que es mucho problema creo que puedo hacerlo de otra


forma.
>
> Un saludo.
>
>
>
> "KL" escribió en el mensaje
> news:
>> Luises,
>>
>> Depende de lo q quiera decir "cuando una celda cambie".
>>
>> Si se trata de cambiar el contenido (texto, valor, formula) mediante
> edicion
>> manual o via VBA, entonces el evento a usar es Worksheet_Change o
>> Workbook_SheetChange solo q tienes q poner una condicion para q solo se
>> dispare cuando cambie la celda en cuestion. Por ejemplo si quieres q el
>> mensaje te aparezca solo cuando cambie la celda [A1] en una hoja
> determinada
>> coloca el siguiente codigo en el modulo de la hoja en cuestion:
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>> Set MiCelda = Range("A1")
>> If Not Intersect(Target, MiCelda) Is Nothing Then
>> MsgBox MiCelda
>> End If
>> End Sub
>>
>> y si quieres q aparezca el mensaje si cambia [A1] en cualquiera de las
> hojas
>> del libro entonces usa:
>>
>> Private Sub Workbook_SheetChange(ByVal Sh As Object, _
>> ByVal Target As Range)
>> Set MiCelda = Range("A1")
>> If Not Intersect(Target, MiCelda) Is Nothing Then
>> MsgBox MiCelda
>> End If
>> End Sub
>>
>> Si se tratase de captar otro tipo de cambios - p.ej. cambio de formato


de
> la
>> celda, nuevo valor como resultado de recalcolo de la formula, etc -
>> habria
> q
>> recurrir a otros eventos o combinaciones de eventos.
>>
>> Saludos,
>> KL
>>
>> Saludos,
>> KL
>>
>> "Luises" wrote in message
>> news:
>> > Buenos días.
>> >
>> > Quiero que cuando una celda cambie me salga un mensaje MsgBox, pero


no
> sé
>> > el
>> > evento. ¿Alguien lo sabe?
>> >
>> > Muchas gracias.
>> >
>> >
>>
>>
>
>


Respuesta Responder a este mensaje
#7 Luises
30/12/2004 - 10:28 | Informe spam
Ya está. Era ése el problema, tenía que crear un comentario. Muchas gracias.

Un saludo.


"Luises" escribió en el mensaje
news:
He probado el código que me has dicho. Me sale el error
"Variable de objeto o bloque With no establecido" en la línea "If .Text <>
.Comment.Text Then".

¿Tengo que crear un comentario inicialmente?




"KL" escribió en el mensaje
news:
> Luises,
>
> Prueba poner el codigo de abajo en el modulo de EsteLibro


(ThisWorkBook).
> Este codigo usa el Comentario para almacenar el ultimo valor de la celda
> [A1] para luego poder validarlo cada vez q se produzcan cambios en las
> hojas. Si la formula hace referencia a otro fichero, creo q habria q


usar
el
> evento Calculate en vez de Change.
>
> Saludos,
> KL
>
> '--Inicio Codigo--
> Private Sub Workbook_Open()
> Call ActualizarComentario
> End Sub
>
> Private Sub Workbook_SheetChange(ByVal Sh As Object, _
> ByVal Target As Range)
> With Sheets("Hoja1").Range("A1")
> If .Text <> .Comment.Text Then
> MsgBox "A1 ha cambiado de " & .Comment.Text & _
> " a " & .Text
> Call ActualizarComentario
> End If
> End With
> End Sub
>
> Sub ActualizarComentario()
> With Sheets("Hoja1").Range("A1")
> On Error Resume Next
> .AddComment .Text
> .Comment.Text .Text
> End With
> End Sub
> '--Fin Codigo--
>
>
> "Luises" wrote in message
> news:%
> > Muchas gracias, KL.
> >
> > En verdad, "que la celda cambie" significa que cambia el resultado de
una
> > fórmula. Si no te cuesta mucho, ¿podrías decirme qué variación hay que
> > hacer? Si ves que es mucho problema creo que puedo hacerlo de otra
forma.
> >
> > Un saludo.
> >
> >
> >
> > "KL" escribió en el mensaje
> > news:
> >> Luises,
> >>
> >> Depende de lo q quiera decir "cuando una celda cambie".
> >>
> >> Si se trata de cambiar el contenido (texto, valor, formula) mediante
> > edicion
> >> manual o via VBA, entonces el evento a usar es Worksheet_Change o
> >> Workbook_SheetChange solo q tienes q poner una condicion para q solo


se
> >> dispare cuando cambie la celda en cuestion. Por ejemplo si quieres q


el
> >> mensaje te aparezca solo cuando cambie la celda [A1] en una hoja
> > determinada
> >> coloca el siguiente codigo en el modulo de la hoja en cuestion:
> >>
> >> Private Sub Worksheet_Change(ByVal Target As Range)
> >> Set MiCelda = Range("A1")
> >> If Not Intersect(Target, MiCelda) Is Nothing Then
> >> MsgBox MiCelda
> >> End If
> >> End Sub
> >>
> >> y si quieres q aparezca el mensaje si cambia [A1] en cualquiera de


las
> > hojas
> >> del libro entonces usa:
> >>
> >> Private Sub Workbook_SheetChange(ByVal Sh As Object, _
> >> ByVal Target As Range)
> >> Set MiCelda = Range("A1")
> >> If Not Intersect(Target, MiCelda) Is Nothing Then
> >> MsgBox MiCelda
> >> End If
> >> End Sub
> >>
> >> Si se tratase de captar otro tipo de cambios - p.ej. cambio de


formato
de
> > la
> >> celda, nuevo valor como resultado de recalcolo de la formula, etc -
> >> habria
> > q
> >> recurrir a otros eventos o combinaciones de eventos.
> >>
> >> Saludos,
> >> KL
> >>
> >> Saludos,
> >> KL
> >>
> >> "Luises" wrote in message
> >> news:
> >> > Buenos días.
> >> >
> >> > Quiero que cuando una celda cambie me salga un mensaje MsgBox, pero
no
> > sé
> >> > el
> >> > evento. ¿Alguien lo sabe?
> >> >
> >> > Muchas gracias.
> >> >
> >> >
> >>
> >>
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida