View Single Post
  #12   Report Post  
Posted to microsoft.public.excel.programming
Ron de Bruin Ron de Bruin is offline
external usenet poster
 
Posts: 11,123
Default timestamp comments

Hi Ben

wow you guys are so helpful on these boards

We try to me helpful

This example will add 3 controls to the Cell menu that run your own macro's.

Change this two lines :

onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")


Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub


Sub Delete_Controls()
Dim i As Long
Dim caption_names As Variant
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(caption_names) To UBound(caption_names)
On Error Resume Next
.Controls(caption_names(i)).Delete
On Error GoTo 0
Next i
End With
End Sub



--
Regards Ron de Bruin
http://www.rondebruin.nl


"BenMetz" wrote in message ...
wow you guys are so helpful on these boards. i didn't realize those different
module things meant anything :)

is it possible to add different options to the context menus? so i can make
any list option link to a macro?

"Ron de Bruin" wrote:

Hi Ben

In the Thisworkbook module of your workbook add this two events

Private Sub Workbook_Activate()
Application.CommandBars("cell").FindControl(ID:=20 31).OnAction _
= ThisWorkbook.Name & "!CommentDateTimeAdd"
End Sub


Private Sub Workbook_Deactivate()
Application.CommandBars("Cell").FindControl(ID:=20 31).Reset
End Sub


In a normal module copy the macro


Sub CommentDateTimeAdd()

Dim strDate As String
Dim cmt As Comment
Dim lBreak As Long
Dim lArea As Long

strDate = "dd-mmm-yy hh:mm:ss"
Set cmt = ActiveCell.Comment

If cmt Is Nothing Then
Set cmt = ActiveCell.AddComment
cmt.Text Text:=Format(Now, strDate) & Chr(10)
Else
cmt.Text Text:=cmt.Text & Chr(10) _
& Format(Now, strDate) & Chr(10)
End If

With cmt.Shape.TextFrame
.Characters.Font.Bold = False
End With

SendKeys "%ie~"

End Sub


--
Regards Ron de Bruin
http://www.rondebruin.nl


"BenMetz" wrote in message ...
why would i be getting the "The macro error 'Book1.xls!CommentDateTimeAdd'
cannot be found.

i knwo the macro is named correctly and ti is in the workbook.

"Ron de Bruin" wrote:

Hi Ben

Code looks like this

Sub ChangeControlMacro()
Application.CommandBars("cell").FindControl(ID:=20 31).OnAction = ThisWorkbook.Name & "!TestMacro"

'to reset use
'Application.CommandBars("Cell").FindControl(ID:=2 031).Reset
End Sub


Sub TestMacro()
MsgBox "Hi"
End Sub



--
Regards Ron de Bruin
http://www.rondebruin.nl


"BenMetz" wrote in message ...
thanks alot for all the replies, so far everything has worked correctly.

just curious though, can i arrange ti so either the "Insert Comment" in the
context menu activates the macro? when i set a shortcut to the macro, it adds
the date/time, but it doesn't open the comment.

and are there any other time formats? like day fo the week?

"Debra Dalgleish" wrote:

Or to add another date at the end of the existing comment, and open the
comment for editing:

'=========================
Sub CommentDateTimeAdd()

Dim strDate As String
Dim cmt As Comment
Dim lBreak As Long
Dim lArea As Long

strDate = "dd-mmm-yy hh:mm:ss"
Set cmt = ActiveCell.Comment

If cmt Is Nothing Then
Set cmt = ActiveCell.AddComment
cmt.text text:=Format(Now, strDate) & Chr(10)
Else
cmt.text text:=cmt.text & Chr(10) _
& Format(Now, strDate) & Chr(10)
End If

With cmt.Shape.TextFrame
.Characters.Font.Bold = False
End With

SendKeys "%ie~"

End Sub
'=========================

Ron de Bruin wrote:
Hi Ben

You can run this macro if you want to add a comment with date/time stamp or change the date/time in the comment.

Sub Test()
Dim cmt As Comment
Set cmt = ActiveCell.Comment
If cmt Is Nothing Then
ActiveCell.AddComment
ActiveCell.Comment.Text Text:=Format(Now, "dd-mmm-yy hh-mm-ss")
Else
If IsNumeric(Right(ActiveCell.Comment.Text, 2)) Then
ActiveCell.Comment.Text Text:=Left(ActiveCell.Comment.Text, Len(ActiveCell.Comment.Text) - 18) _
& Format(Now, "dd-mmm-yy h-mm-ss")
Else
ActiveCell.Comment.Text Text:=ActiveCell.Comment.Text & Chr(10) & Format(Now, "dd-mmm-yy hh-mm-ss")
End If
End If
End Sub




--
Debra Dalgleish
Excel FAQ, Tips & Book List
http://www.contextures.com/tiptech.html