MACRO QUE ponga comentario en celda al cambiar de valor

Tengo la celda A1 que conforma una fórmula de sumas y restas

Lo que necesito es que si el valor de A100 es >0 entonces me ponga comentario en la celda D100 con el sig. Comentario "este dato fue registrado el día:( la fecha siempre estará en la primera fila de la columna en este caso es la Columna D)

Ahora si la celda A100 <= 0 entonces el sig. Comentario en la celda E100 "este dato fue ingresado el dia: (la fecha que esta en la fila 1 de la col. D)

Y así sucesivamente para un rango de A100:A200

2 Respuestas

Respuesta
1

<Zxzx

Este es realmente sencillo, procede a crear una macro para la hoja en cuestión, por ejemplo Hoja1 y en el evento CHANCE, o sea cada vez que cambie un valor en la celda A100, se produce el siguiente código con la función de agregar comentario en la celda D100 o celda E100.

Private Sub Worksheet_Change(ByVal Target As Range)
' Target.Column = 1 es para limitar la macro a la columna A
' Target.Row = 100 es para limitar la macro a la Fila 100
If Target.Column = 1 And Target.Row = 100 Then
    If Range("A100") > 0 Then
      Range("D100") = "'" & "este dato fue registrado el día: " & Range("D1")
    End If
    If Range("A100") <= 0 Then
     Range("E100") = "'" & "este dato fue registrado el día: " & Range("D1")
    End If
End If
End Sub

OK si funciona gracias

Pido una disculpa por no especificarme ya que con comentario me refería a

addcomment

ALGO ASÍ COMO ESTO

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Target.Column = 1 es para limitar la macro a la columna A
'Target.Row = 100 es para limitar la macro a la Fila 100
On Error Resume Next
If Target.Column = 1 And Target.Row = 10 Then
If Range("A10") > 0 Then
' Range("D10") = "'" & "este dato fue registrado el día: " & Range("D1")
Range("e10").ClearComments
Range("D10").AddComment
Range("D10:").Comment.Visible = False
Range("D10").Comment.Text Text:="JAIRO ESCALANTE:" & Chr(10) & "este dato fue registrado el día: " & Range("D1")
End If
If Range("A10") <= 0 Then
'Range("E10") = "'" & "este dato fue registrado el día: " & Range("D1")
Range("D10").ClearComments
Range("e10").AddComment
Range("e10").Comment.Visible = False
Range("e10").Comment.Text Text:="JAIRO ESCALANTE:" & Chr(10) & "este dato fue registrado el día: " & Range("D1")


End If
End If
End Sub

Lo que necesito es expander tanto mi rango cambiante osea

A10:A100 al igual de donde irán cada comentario

Si es A11 las celdas con comentarios serán: D11 Y C11

Si es A12 las celdas con comentarios serán D12 YC12 así así hasta la fila 100 respetando el orden y sobre todo respetando cada comentario

Ok. No me había fijado en la nota que dices que debe ser entre A100 y A200. Este es el código:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim MiCelda, OtraCelda ' Variables que captura la referencia
' Target.Column = 1 es para limitar la macro a la columna A
'Target.Row >= 100 es para limitar la macro a la Fila 100 y Target.Row <= 200 a la fila 200
'esto se ejecuta si lo cambios se hacen en el rango A100 y A200
If Target.Column = 1 And (Target.Row >= 100 And Target.Row <= 200) Then
    MiCelda = Target.Address(RowAbsolute:=False, ColumnAbsolute:=False, ReferenceStyle:=xlA1, External:=False, RelativeTo:=MiCelda)
    If Range(MiCelda) > 0 Then
        OtraCelda = "D" & LTrim(Str(Target.Row))
        Range(OtraCelda).ClearComments
        Range(OtraCelda).AddComment
        Range(OtraCelda).Comment.Visible = True
        Range(OtraCelda).Comment.Text Text:="JAIRO ESCALANTE:" & Chr(10) & "este dato fue registrado el día: " & Range("D1")
    End If
    If Range(MiCelda) <= 0 Then
        OtraCelda = "E" & LTrim(Str(Target.Row))
        Range(OtraCelda).ClearComments
        Range(OtraCelda).AddComment
        Range(OtraCelda).Comment.Visible = True
        Range(OtraCelda).Comment.Text Text:="JAIRO ESCALANTE:" & Chr(10) & "este dato fue registrado el día: " & Range("D1")
End If
End If
End Sub

Este sí añade comentarios a cada columna de D y E correspondientes a la misma fila. No te olvides de agradecer...

Perdón en

Range(OtraCelda).Comment.Visible = True

Debes colocar:

Range(OtraCelda).Comment.Visible = False
Respuesta
2

Yo lo hice más o menos así :

Sub fecha()

If Range("a100").Value > 0 Then
Range("d100").Value = "este dato se registro en" & Range("d1").Value
End If

If Range("a100").Value <= 0 Then
Range("e100").Value = "este dato se registro en" & Range("e1").Value
End If
End Sub

Puedes intentar cambiarle el rango donde dice range

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas