Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4
Default bulk transfer of comments using a range

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default bulk transfer of comments using a range

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4
Default bulk transfer of comments using a range

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default bulk transfer of comments using a range

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
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to transfer specific range to another range ? ghost Excel Discussion (Misc queries) 0 June 11th 08 05:10 PM
adding colors, patterns, comments to large spreadsheets in bulk DB042188 Excel Programming 2 April 9th 08 07:27 PM
How to transfer emails from excel to bulk mailer Moving addresses from excel Excel Discussion (Misc queries) 1 December 20th 07 02:54 PM
ADO Excel to Access - bulk transfer of array? Post Tenebras Lux Excel Programming 3 April 12th 07 04:58 PM
Named Range Transfer Graham Haughs Excel Discussion (Misc queries) 9 February 21st 07 02:58 PM


All times are GMT +1. The time now is 12:38 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"