Visual Basic para Aplicaciones - Determinar si una celda tiene comentario

Life is soft - evento anual de software empresarial
 
Vista:

Determinar si una celda tiene comentario

Publicado por Luis Castillo (13 intervenciones) el 08/09/2006 01:53:29
Amigos programadores, primera vez que acudo a Ustedes. tengo una relación de datos en la columna "E" de un libro en Excel, algunas vacías, otras con importes y otras con importes + comentario, son más de 7,000. Necesito poder copiar a la columna "H" todos los importes de la columna "E" siempre y cuando la celda de la columna "E" no tenga comentario.¿Alguien me puede proporcionar el código que necesito para ello?, hasta el momento extraigo todos los datos, pues no encuentro como determinar si la celda tiene o no comentario.

el código que utilizo en asi :

Private Sub Selecciona()

' Determino cúal es la ultima fila con informacion
fFin = ActiveSheet..Range("D1").End(xlDown).row
fDest = 2

For Fila = 2 to fFin
If ActiveSheet.Cells(Fila, 5) <> "" Then
ActiveSheet.Cells(fDest, 8) = ActiveSheet.Cells(Fila, 5)
fDest = fDest + 1
End If
Next Fila

end Sub

Espero me puedan ayudar. desde ya muchas gracias.
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

RE:Determinar si una celda tiene comentario

Publicado por The Emulator (29 intervenciones) el 08/09/2006 03:47:01
Hola

Primero que todo decirte que no soy un experto en Excell(Ese no es mi furete) pero concesgui sacar una solucion con el VBA

Bueno pues para saber el comentario que tiene una celda se usa esto
Range("A1").Comment.Text
Esto nos devolveria el valor de ese comentario(Un texto) pero hay un pequeno problema cuando se trata de obtener el comentario de una celda que no tiene, el programa provoca un error en tiempo de ejecucion.

Aqui hize un pequeno ejemplo.

Teniendo en la columna A 20 campos con valores en algunos de ellos coloque algunos comentarios y con un boton al precionarlo en la columna B(X) aparecera el valor de la celda A(X) que contenia comentario aqui estan los valores de la celda A(X) los que tienen * es que les coloque comentario y en la coloumna B saldran los valores de A que tenian comentario

A B
*1 1
2 5
3 10
4 15
*5 20
6
7
8
9
*10
11
12
13
14
*15
16
17
18
19
*20

El ejemplo anterior lo prove y funciono ya que el resultado son los datos de la columna B.

Eso si como te mencione al principio al intentar tomar el comentario de una celda que esta vacio(El comentario)provoca un error por eso en el codigo que yo use trabaje con manejo de errores para que el programa no colapsara


Aqui esta el codigo


Public Sub Copiar()
On Error Resume Next
Dim X As Integer
Dim CeldaOrigen As Range
Dim CeldaDestino As Range
Dim UltimaPos As Integer
Dim Comentario As String

For X = 1 To 20
Set CeldaOrigen = Me.Cells(X, 1)
Comentario = CeldaOrigen.Comment.Text
If Err.Number = 0 Then
UltimaPos = UltimaPos + 1
Set CeldaDestino = Me.Cells(UltimaPos, 2)
CeldaDestino.Value = CeldaOrigen.Value
Else
Err.Clear
End If
Set CeldaOrigen = Nothing
Next
End Sub

Private Sub CommandButton1_Click()
Copiar
End Sub


Espero que esto te sirva como una guia

Saludos

http://www.theemulator.tk
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

RE:Determinar si una celda tiene comentario

Publicado por JuanC (243 intervenciones) el 09/09/2006 19:12:17
Hice algunas modificaciones al original...

Private Sub Selecciona()
Dim lfFin&, lfDest&, lFila&
Dim c As Excel.Comment

lfFin = ActiveSheet.Range("D1").End(xlDown).Row
lfDest = 2

For lFila = 2 To lfFin
With ActiveSheet
Set c = Cells(lFila, 5).Comment
If Not IsEmpty(.Cells(lFila, 5)) And c Is Nothing Then
.Cells(lfDest, 8) = .Cells(lFila, 5)
lfDest = lfDest + 1
End If
End With
Next

Set c = Nothing
End Sub

Saludos desde Baires, JuanC
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

genial gracias , probado ok en office 365

Publicado por fredy patiño (1 intervención) el 18/05/2023 18:14:30
simplificado sin el for , solo para la celda A9
On Error Resume Next
Dim CeldaOrigen As Range
Dim Comentario As String


Set CeldaOrigen = Worksheets("ver").Cells(9, 1)
Comentario = CeldaOrigen.Comment.Text
'If Comentario <> "" Then
' MsgBox Comentario
'End If
If Err.Number = 0 Then
MsgBox Comentario
'MsgBox "Si Detecta"
Else
MsgBox "No Detecta"
Err.Clear
End If
Set CeldaOrigen = Nothing
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

RE:Determinar si una celda tiene comentario

Publicado por Luis Castillo (9 intervenciones) el 14/09/2006 18:48:56
Amigos, yo mismo encontré otra respuesta en la ayuda de la misma Microdoft, la encontré por Internet y es la siguiente : Se decklara una variable MyComent as Object y el código queda asi :

Set MyComent = Activesheets.Cells(Fila, NroCol).Comment
'Si NO TIENE hace...
If MyComent Is Nothing Then
Aqui indico lo que necesito que se haga
Else
Lo que hará si no tiene comentario.
End If

Set MyComent = Nothing

Realmente, agradezco a cada uno de Uds. y espero que esto también les ayude en algún momento.

hasta la proxima.
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

RE:Determinar si una celda tiene comentario

Publicado por Salvador (1 intervención) el 31/01/2016 21:57:22
hola Luis Castillo.. soy nuevo el la programacion...pero me gustaria saber de que tiepo declarastes la variable MyComent..
por que no lo puedo hacer funcionar...

te comento lo que necesito que aga mi programa..

yo tengo 4 celdas A1,B1,C1 ,D1 y lo que necesito es que si el usuario ponga un dato en A1->C1 y que automaticamente la celda D1 se cree un comentario de el valor de la celda A1+B1+C1.

ahora bien..

si el usuario, buelve a modificar la celda B1 entonces (la celda D1 ya tiene un comentario) actualizar el comentario con los nuevos datos de A1+B1+C1... espero aberme explicado bien.. gracias! que tengas buen dia.
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