Buscador de comentarios en excel

Te envio esta consulta. :
Desarrolle una planilla en la cual hay muchos comentarios y muchas lineas.
Y diseñe un formulario el cual debe buscar cualquier comentario pero en todo el libro
funciona ! Pero solo busca en la hoja activa.
El form tiene un textbox y un boton . En el texbox el usuario coloca el valor a buscar
y el boton tiene el siguiente codigo.-
Private Sub CommandButton1_Click()
On Error GoTo errando
Cells.Find(What:=TextBox1.Value, After:=ActiveCell, LookIn:=xlComments, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
Exit Sub
errando:
MsgBox "Nombre inválido para esta hoja intente con otra."
end sub
Esto solo me funciona si el comentario esta en la hoja activa.. Pero si esta en otra
hoja ... No lo busca..
¿Me podrias ayudar con esto?

1 respuesta

Respuesta
1
a), lógicamente tienes que decirle que el libro contiene o no más hojas. Prueba añadiendo este pedazo de código:
Dim SheetNames() As String
Dim SheetHidden() As Boolean
Dim i As Integer
Dim SheetCount As Integer
Dim VisibleWins As Integer
Dim Item As Object
Dim OldActive As Object
If ActiveWorkbook Is Nothing Then Exit Sub ' No está activo el Libro de Trabajo
SheetCount = ActiveWorkbook.Sheets.Count
If SheetCount = 1 Then Exit Sub ' Solo tiene una Hoja
' Verificar la Estructura de Protección del Libro
If ActiveWorkbook.ProtectStructure Then
MsgBox ActiveWorkbook.Name & " está protegido.", _
vbCritical, "No se puede continuar."
Exit Sub
End If
' Desahabilitar Ctrl+Break
Application.EnableCancelKey = xlDisabled
' Obtener el número de hojas del Libro
SheetCount = ActiveWorkbook.Sheets.Count
' Almacenar una referencia a la Hoja Activa
Set OldActive = ActiveSheet
'Ejecutar el Código
For i = 1 To SheetCount
      Aquí va tu código
Next i
No especificas si estas pegando los comentarios en algún lado pero eso te queda de tarea, creo que ya te ayudé lo suficiente.
[email protected]
Hola Amigo !!! muy bueno el codigo...
ya lo peguè
y quedo así
Dim SheetNames() As String
Dim SheetHidden() As Boolean
Dim i As Integer
Dim SheetCount As Integer
Dim VisibleWins As Integer
Dim Item As Object
Dim OldActive As Object
Dim VALOR
VALOR = TextBox1.Value
If ActiveWorkbook Is Nothing Then Exit Sub ' No está activo el Libro de Trabajo
SheetCount = ActiveWorkbook.Sheets.Count
If SheetCount = 1 Then Exit Sub ' Solo tiene una Hoja
' Verificar la Estructura de Protección del Libro
'If ActiveWorkbook.ProtectStructure Then
'MsgBox ActiveWorkbook.Name & " está protegido.", _
'vbCritical, "No se puede continuar."
'Exit Sub
'End If
'' Desahabilitar Ctrl+Break
''Application.EnableCancelKey = xlDisabled
' Obtener el número de hojas del Libro
SheetCount = ActiveWorkbook.Sheets.Count
' Almacenar una referencia a la Hoja Activa
Set OldActive = ActiveSheet
'Ejecutar el Código
For i = 1 To SheetCount
Cells.Find(What:=VALOR, After:=ActiveCell, LookIn:=xlComments).Activate
Next i
end sub
el tema es que no funciona.. solo busca los comentarios de la hoja en
la que esta parado .... si tengo algun comentario en otra hoja
y coloco el valor de ese comentario en el textbox1 ..no lo busca..
me tira depurar error en cells.find(what:=valor,after:=activecell,lookin:xlcomments).activate
y ahì se queda........
Yo no puedo identificar el error....
Podrias ayudarme en este ultimo paso ?
Saludos y muy amable de tu parte brindarme esta ayuda !!
Tienes otro error al cual no le había prestado atención, y es que no le dices dónde deben ir los comentarios. Probemos agregando más código así:
Dim CommentCount As Integer
Dim cell As Range
Dim x As String
Dim CommentSheet As Worksheet
Dim OldSheets As Integer
Dim Row As Integer
Dim SheetNames() As String
Dim SheetHidden() As Boolean
Dim i As Integer
Dim SheetCount As Integer
Dim VisibleWins As Integer
Dim Item As Object
Dim OldActive As Object
Dim VALOR
VALOR = TextBox1.Value
If ActiveWorkbook Is Nothing Then Exit Sub ' No está activo el Libro de Trabajo
SheetCount = ActiveWorkbook.Sheets.Count
If SheetCount = 1 Then Exit Sub ' Solo tiene una Hoja
' Verificar la Estructura de Protección del Libro
'If ActiveWorkbook.ProtectStructure Then
'MsgBox ActiveWorkbook.Name & " está protegido.", _
'vbCritical, "No se puede continuar."
'Exit Sub
'End If
'' Desahabilitar Ctrl+Break
''Application.EnableCancelKey = xlDisabled
' Obtener el número de hojas del Libro
SheetCount = ActiveWorkbook.Sheets.Count
' Almacenar una referencia a la Hoja Activa
Set OldActive = ActiveSheet
'Ejecutar el Código
For i = 1 To SheetCount
' Salir si no hay comentarios
CommentCount = 0
For Each cell In ActiveSheet.UsedRange
On Error Resume Next
x = cell.Comment.Text
If Err = 0 Then CommentCount = CommentCount + 1
Next cell
If CommentCount = 0 Then
MsgBox "La hoja de trabajo activa no contiene ningún comentario.", vbInformation
Exit Sub
End If
' Crear nuevo libro de trabajo con una hoja
On Error GoTo 0
Set CommentSheet = ActiveSheet
OldSheets = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
Workbooks.Add
Application.SheetsInNewWorkbook = OldSheets
ActiveWorkbook.Windows(1).Caption = "Comentarios para " & CommentSheet.Name & " en " & CommentSheet.Parent.Name
' Listar los comentarios
Row = 1
Cells(Row, 1) = "Dirección"
Cells(Row, 2) = "Contenidos"
Cells(Row, 3) = "Comentario"
Range(Cells(Row, 1), Cells(Row, 3)).Font.Bold = True
For Each cell In CommentSheet.UsedRange
On Error Resume Next
x = cell.Comment.Text
If Err = 0 Then
Row = Row + 1
Cells(Row, 1) = cell.Address(rowabsolute:=False, columnabsolute:=False)
Cells(Row, 2) = " " & cell.Formula
Cells(Row, 3) = cell.Comment.Text
End If
Next cell
Columns("B:B").EntireColumn.AutoFit
Columns("C:C").ColumnWidth = 34
Cells.EntireRow.AutoFit
Cells.Find(What:=VALOR, After:=ActiveCell, LookIn:=xlComments).Activate
Next i

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas