Limitar la longitud de un comentario en excel

¿Se puede por medio de una macro limitar el número de caracteres de los comentarios de las celdas en Excel? Y borrar el nombre de la persona que lo introduce (¿lo qué va antes de los dos puntos)?

2 Respuestas

Respuesta
2

Puedes limitar la longitud del comentario, pero no cuando estás capturando el comentario. Podrías capturar el comentario en un Textbox de un Usreform y con la propiedad del textbox limitar la cantidad de caracteres. Es algo más elaborado, pero resuelve tu necesidad.

Por ejemplo, crea un userform con un textbox1, un label2 y un commandbutton1

Se vería más o menos así:

Conforme vayas escribiendo en la parte superior te mostrará el número de caracteres disponibles:

El código del userform :

Private Sub CommandButton1_Click()
'Por.Dante Amor
    With Selection
        If .Comment Is Nothing Then
            .AddComment
            .Comment.Visible = True
            .Comment.Text Text:=TextBox1.Value
        Else
            MsgBox "La celda ya tiene un comentario"
        End If
    End With
    Unload Me
End Sub
'
Private Sub CommandButton2_Click()
    Unload Me
End Sub
'
Private Sub TextBox1_Change()
    Label2.Caption = "Caracteres diponibles: " & TextBox1.MaxLength - Len(TextBox1.Value)
End Sub
'
Private Sub UserForm_Activate()
    TextBox1.MaxLength = 50
    Label2.Caption = "Caracteres diponibles: " & TextBox1.MaxLength
End Sub

El comentario se insertará en la celda seleccionada. Nota: Solamente se insertará el texto que hayas escrito, no te pondrá el usuario y los 2 puntos


En esta línea del código establecerías cuántos caracteres deseas de longitud.

TextBox1.MaxLength = 50


Instrucciones para userform

  1. Abre tu hoja de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / UserForm
  4. Le das dobleclik en cualquier parte del Panel del userForm, en el panel en blanco que se abre pegas la macro

Te anexo mi archivo de pruebas para que lo revises.

https://www.dropbox.com/s/aomwmpj41xu8nxt/insertar%20comentario%20con%20userform.xlsm?dl=0 

Si tienes dificultad para descargar el archivo, envíame un correo a

[email protected] 

En el asunto del correo escribe tu nombre de usuario: "daniel perez"

Y te reenvío el archivo.

Sal u dos

Respuesta
2

Una forma de borrar el nombre (y los 'dos puntos') de los comentarios, es el siguiente (suponiendo que no los has cambiado 'manualmente' antes):

Sub CambiarComentarios()
Dim Comentarios As Comment
Dim NombreUsuario As String
Dim NuevoNombre As String
NombreUsuario = Application.UserName & ":"
NuevoNombre = ""
    For Each Comentarios In ActiveSheet.Comments
        Comentarios.Text (Replace(Comentarios.Text, NombreUsuario, NuevoNombre))
    Next
End Sub

Lo de limitar lo de los comentarios es complicado, hasta Excel 2003 era relativamente "fácil"  bloquear la inserción de comentarios (y otras cosas) pero a partir de la versión 2007  en muchos casos esas cosas ya no se pueden hacer. La alternativa es la misma que te dije ayer: Recorrer los comentarios (parecido a la propuesta anterior) y borrar los caracteres de más. 

Abraham Valencia

Soy un novato, ¿pero crees que una posible solución seria que al crear un comentario este automáticamente pase a una celda y si es más de POR caracteres salte un aviso diciendo que es demasiado largo? ¿O consumiría muchos "recursos"? Lo que me interesa es que lo avise, no que lo borre

Perdona que te moleste, pero como digo estoy aprendiendo, a ver si me puedes guiar, tengo una macro que funciona perfecta, que seria esta:

Sheets("MES").Select
ufila = Range("AM" & Rows.Count).End(xlUp).Row
col = Range("AM2").Column
K = K + 1
For i = 2 To ufila
If Cells(i, col) Like "XXXX" Then
Sheets(selecciondia).Range("A" & K) = Sheets("MES").Range("A" & i)
K = K + 1
Sheets(selecciondia).Range("A" & K) = "Siguiente"
End If
Next
Sheets("MES").Select

Es parte de una macro mayor, pero esta parte lo que hace es buscar en la hoja MES por filas que en una columna se de la condición "XXXX" y si es así copie el valor de la celda de otra columna en la hoja del día. Mi pregunta es, ¿hay alguna forma de simplificar esto si fueran varias condiciones? Como he dicho soy nuevo y lo que he hecho es copiarlo varias veces cambiando la condición

El gran problema es que no hay un evento que detecte cuando se inserta un comentario, por eso te decía que la propuesta es que los comentarios se "revisen" post inserción y cuando actives alguna macro.

Sobre tu otro dilema, sugiero abrir una nueva pregunta.

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas