Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I'm trying to add comments to a range rather than one by one as follows...
Range(Cells(lRow, lOrigCol), Cells(lRow, lCol)).Comment = aRowComment ....in an effort to get better run times but get the following error object variable or with block variable not set ....when I append .Text on the end of the command I get a compile error saying assignment to a constant not permitted aRowComment is an array of comments, built similarly to the array of values currently transferring to the range with no problems. |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I think you're going to have to loop through the cells and loop through the
comments. Dim aRowComment As String Dim myCell As Range dim cCtr as long dim aRowComment as variant arowcomment = array("test","test2","test3") cctr = lbound(arowcomment) With ActiveSheet with .Range(.Cells(lRow, lOrigCol), .Cells(lRow, lCol)) if .cells.count < ubound(arowcomment) - lbound(arowcomment) + 1 then 'not enough comments for all the cells! exit sub end if 'clear existing comments .ClearComments For Each myCell In .Cells myCell.AddComment Text:=aRowComment(cctr) cctr = cctr + 1 Next myCell End With End With I have no idea if this puts the comments where you want them--test it before you trust it. You may want to loop through each row--or loop through each column. DB042188 wrote: I'm trying to add comments to a range rather than one by one as follows... Range(Cells(lRow, lOrigCol), Cells(lRow, lCol)).Comment = aRowComment ...in an effort to get better run times but get the following error object variable or with block variable not set ...when I append .Text on the end of the command I get a compile error saying assignment to a constant not permitted aRowComment is an array of comments, built similarly to the array of values currently transferring to the range with no problems. -- Dave Peterson |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Dave, I'm trying to speed things up, is your solution faster than what we
already do which is to add them one by one as they come up thru a call to something like ... Private Sub InsertComment(lCol As Long, lRow As Long, sType As String, sValue As String, lColor As Long) Dim sTmpCell As String Dim sComment As String Const PROC_NAME = "InsertComment" On Error GoTo ERR_HANDLER sTmpCell = GetCellAddress(lCol, lRow) With Range(sTmpCell) If .Comment Is Nothing Then .AddComment .Comment.Text Text:=sType & sValue & vbNullString Else sComment = .Comment.Text .Comment.Text Text:=sComment & vbLf & sType & sValue & vbNullString End If .Comment.Visible = False .Comment.Shape.TextFrame.Characters.Font.Size = 8 .Comment.Shape.TextFrame.Characters.Font.Bold = False .Comment.Shape.TextFrame.Characters.Font.Color = vbBlue End With Exit Sub ERR_HANDLER: Call AppError(err, MODULE_NAME, PROC_NAME) End Sub ? "Dave Peterson" wrote: I think you're going to have to loop through the cells and loop through the comments. Dim aRowComment As String Dim myCell As Range dim cCtr as long dim aRowComment as variant arowcomment = array("test","test2","test3") cctr = lbound(arowcomment) With ActiveSheet with .Range(.Cells(lRow, lOrigCol), .Cells(lRow, lCol)) if .cells.count < ubound(arowcomment) - lbound(arowcomment) + 1 then 'not enough comments for all the cells! exit sub end if 'clear existing comments .ClearComments For Each myCell In .Cells myCell.AddComment Text:=aRowComment(cctr) cctr = cctr + 1 Next myCell End With End With I have no idea if this puts the comments where you want them--test it before you trust it. You may want to loop through each row--or loop through each column. DB042188 wrote: I'm trying to add comments to a range rather than one by one as follows... Range(Cells(lRow, lOrigCol), Cells(lRow, lCol)).Comment = aRowComment ...in an effort to get better run times but get the following error object variable or with block variable not set ...when I append .Text on the end of the command I get a compile error saying assignment to a constant not permitted aRowComment is an array of comments, built similarly to the array of values currently transferring to the range with no problems. -- Dave Peterson |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
They look pretty much equivalent to me. I would suspect that you wouldn't
notice a difference. DB042188 wrote: Dave, I'm trying to speed things up, is your solution faster than what we already do which is to add them one by one as they come up thru a call to something like ... Private Sub InsertComment(lCol As Long, lRow As Long, sType As String, sValue As String, lColor As Long) Dim sTmpCell As String Dim sComment As String Const PROC_NAME = "InsertComment" On Error GoTo ERR_HANDLER sTmpCell = GetCellAddress(lCol, lRow) With Range(sTmpCell) If .Comment Is Nothing Then .AddComment .Comment.Text Text:=sType & sValue & vbNullString Else sComment = .Comment.Text .Comment.Text Text:=sComment & vbLf & sType & sValue & vbNullString End If .Comment.Visible = False .Comment.Shape.TextFrame.Characters.Font.Size = 8 .Comment.Shape.TextFrame.Characters.Font.Bold = False .Comment.Shape.TextFrame.Characters.Font.Color = vbBlue End With Exit Sub ERR_HANDLER: Call AppError(err, MODULE_NAME, PROC_NAME) End Sub ? "Dave Peterson" wrote: I think you're going to have to loop through the cells and loop through the comments. Dim aRowComment As String Dim myCell As Range dim cCtr as long dim aRowComment as variant arowcomment = array("test","test2","test3") cctr = lbound(arowcomment) With ActiveSheet with .Range(.Cells(lRow, lOrigCol), .Cells(lRow, lCol)) if .cells.count < ubound(arowcomment) - lbound(arowcomment) + 1 then 'not enough comments for all the cells! exit sub end if 'clear existing comments .ClearComments For Each myCell In .Cells myCell.AddComment Text:=aRowComment(cctr) cctr = cctr + 1 Next myCell End With End With I have no idea if this puts the comments where you want them--test it before you trust it. You may want to loop through each row--or loop through each column. DB042188 wrote: I'm trying to add comments to a range rather than one by one as follows... Range(Cells(lRow, lOrigCol), Cells(lRow, lCol)).Comment = aRowComment ...in an effort to get better run times but get the following error object variable or with block variable not set ...when I append .Text on the end of the command I get a compile error saying assignment to a constant not permitted aRowComment is an array of comments, built similarly to the array of values currently transferring to the range with no problems. -- Dave Peterson -- Dave Peterson |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
How to transfer specific range to another range ? | Excel Discussion (Misc queries) | |||
adding colors, patterns, comments to large spreadsheets in bulk | Excel Programming | |||
How to transfer emails from excel to bulk mailer | Excel Discussion (Misc queries) | |||
ADO Excel to Access - bulk transfer of array? | Excel Programming | |||
Named Range Transfer | Excel Discussion (Misc queries) |