Excel - modificar comentario desde un texbox

 
Vista:

modificar comentario desde un texbox

Publicado por pedro garcia (1 intervención) el 01/07/2011 01:18:10
Hola a todos

me podrian ayudar a solucionar un plroblema que tengo al cambiar el valor de una celda, me ingresa un comentario en la celda agregando el contenido de la celda y la fecha en que hace la modificacion.
a esto quiero agregarle un userform con un textbox que al cambiar el valor de la celda abre el userform y pide un nombre.

pero al escribir el nombre no lo muestra en el comentario que ingresa al modificar el valor

la macro que estoy utilizando es:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim empleado As String
empleado = UserForm1.TextBox1.Value

Dim Cell As Range
Dim TextoAnt As String, NuevoTexto As String
If Target.Column < 8 And Target.Column > 39 Then Exit Sub
If ActiveCell <> "Auditoria" And ActiveCell <> "" Then
For Each Cell In Target
With Cell
On Error Resume Next
Load UserForm1
UserForm1.Show
TextoAnt = .Comment.Text
If Err <> 0 Then .AddComment
NuevoTexto = TextoAnt & Cell.Text & _
" a: " & empleado & " el " & Now & vbLf
.Comment.Text NuevoTexto
.Comment.Visible = True
.Comment.Shape.Select
Selection.AutoSize = True
.Comment.Visible = False
End With
Next Cell
End If
Unload UserForm1
End Sub
me podrian ayudar a corregir el error
les agradesco de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

modificar comentario desde un texbox

Publicado por Zeus Alberto Paez Renteria (5 intervenciones) el 01/07/2011 02:42:50
Si solo quieres el nombre yo lo resolveria asi, pero validaria con un if que el nombre del empleado no estuviera vacio tipo Empleado =""

Public Sub Worksheet_Change(ByVal Target As Range)
Dim TextoAnt As String, NuevoTexto As String
Dim Empleado As String
Dim Cell As Range
If Target.Column < 8 And Target.Column > 39 Then Exit Sub
If ActiveCell <> "Auditoria" And ActiveCell <> "" Then
Empleado = InputBox("Escriba su nombre: ", "Nombre del Empleado")
For Each Cell In Target
With Cell
TextoAnt = .Comment.Text
If Err <> 0 Then .AddComment
NuevoTexto = TextoAnt & Cell.Text & _
" a: " & Empleado & " el " & Now & vbLf
.Comment.Text NuevoTexto
.Comment.Visible = True
.Comment.Shape.Select
Selection.AutoSize = True
.Comment.Visible = False
End With
Next Cell
End If
End Sub

El problema de tu codigo es que se corta la ejecucion, se me ocurre tambien que crees un rango public del Target y ejecutes el codigo del For en la forma para que se capture el nombre del empleado.

'Coloca este codigo en la Sheet1

Public Sub Worksheet_Change(ByVal Target As Range)
Dim TextoAnt As String, NuevoTexto As String
Dim Empleado As String
If Target.Column < 8 And Target.Column > 39 Then Exit Sub
If ActiveCell <> "Auditoria" And ActiveCell <> "" Then
Set TargetForm = Target
Load UserForm1
UserForm1.Show
End If
End Sub

'Insertar un Modulo con este codigo

Public UserName As String
Public TargetForm As Range

Public Sub UpdateCells()
Dim Cell As Range
For Each Cell In TargetForm
With Cell
Empleado = UserName
TextoAnt = .Comment.Text
If Err <> 0 Then .AddComment
NuevoTexto = TextoAnt & Cell.Text & _
" a: " & UserName & " el " & Now & vbLf
.Comment.Text NuevoTexto
.Comment.Visible = True
.Comment.Shape.Select
Selection.AutoSize = True
.Comment.Visible = False
End With
Next Cell
Unload UserForm1
End Sub

'Ahora colocale un boton a la forma y colocale el siguiente codigo
Private Sub CommandButton1_Click()
UserName = UserForm1.TextBox1.Value
UpdateCells
End Sub

Quiza te podrias ahorrar el boton de la forma con el afterUpdate en el Textbox1, pero no se si te vaya a funcionar o te marque algun error.
Private Sub TextBox1_AfterUpdate()
UserName = UserForm1.TextBox1.Value
UpdateCells
End Sub

Saludos

Atentamente
Ing. Zeus Alberto Paez Renteria
IT Engineer
Triumph Aerospace Group
Division Insulation
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

modificar comentario desde un texbox

Publicado por Coquito (64 intervenciones) el 01/07/2011 03:43:02
Zeus Alberto... Un saludo desde Peru
Interesante tu aporte...
Por favor podrias ayudarme en lo siguiente :
Trabajando en una hoja... deseo que aleatoriamente con datos de otra hoja y momentaneamente salga una ventana similar a la que sale cuando recibimos un correo
Puede utilizarse esa propiedad...?
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

modificar comentario desde un texbox

Publicado por Ing Zeus Alberto Paez Renteria (5 intervenciones) el 01/07/2011 20:36:16
De poder si se puede pero de hacer esta mas dificil.

Primero como es lo aleatorio, en base a un periodo en una linea de tiempo o a los datos contenidos en la hoja que sean estos los que disparen el evento. Ahora la ventana que salga quieres que sea de Outlook o de Excel, solo que no estoy seguro de las propiedad de transparencia de la ventana emergente sea posible en Excel, lo he hecho en VB.NET pero no se si VBA lo tiene.

De poder hacerse si es posible pero no tan facil, lo primero que necesitas definir es si la ventana es del tipo Outlook o del tipo Msgbox de Excel o un tipo Form.

Lo segundo es que dispara al evento aleatorio un rango de tiempo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar