ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   VBA Loop Formatting Text Question (https://www.excelbanter.com/excel-programming/364133-vba-loop-formatting-text-question.html)

Richard

VBA Loop Formatting Text Question
 
I am having a diffifult time writing this bit of code and I am hoping someone
can help me out.

I have a large data set with varying row numbers each week. I have a column
J that I want to loop through and Bold and Colorthe cells with a "Y" value.
Here is my current code:

XL.Columns("J").Select
Dim CurCell As Object
For Each CurCell In XL.Selection
If XL.ActiveCell.Value = "Y" Then
XL.ActiveCell.Interior.ColorIndex = 6
XL.ActiveCell.Font.Bold = True
End If
Next

It works fine but takes a while because it selects the entire column (all
the way to the end). I don't need to go that far down, just to the last row
of data.

Can anyone show me how to select the entire column down to the last row that
contains data.

Thanks in advance.

Tom Ogilvy

VBA Loop Formatting Text Question
 
Actually, ActiveCell never changes in your loop, so I doubt it actually does
what you want.

XL.Columns("J").Select
Dim CurCell As Object
For Each CurCell In XL.Selection
if isempty(curCell) then exit for
If CurCell.Value = "Y" Then
CurCell.Interior.ColorIndex = 6
CurCell.Font.Bold = True
End If
Next

or

Dim rng as Range, curcell as Range
Dim xl as application
set xl = Application
With xl.Activesheet
set rng = .Range(.Cells(1,"J"),.Cells(rows.count,"J").End(xl up))
End with
for each curcell in rng
if curcell.Value = "Y" then
curcell.Interior.colorIndex = 6
curcell.font.Bold = True
end if
next curcell

--
Regards,
Tom Ogilvy


"Richard" wrote:

I am having a diffifult time writing this bit of code and I am hoping someone
can help me out.

I have a large data set with varying row numbers each week. I have a column
J that I want to loop through and Bold and Colorthe cells with a "Y" value.
Here is my current code:

XL.Columns("J").Select
Dim CurCell As Object
For Each CurCell In XL.Selection
If XL.ActiveCell.Value = "Y" Then
XL.ActiveCell.Interior.ColorIndex = 6
XL.ActiveCell.Font.Bold = True
End If
Next

It works fine but takes a while because it selects the entire column (all
the way to the end). I don't need to go that far down, just to the last row
of data.

Can anyone show me how to select the entire column down to the last row that
contains data.

Thanks in advance.


Richard

VBA Loop Formatting Text Question
 
My bad. I was modifying the code quite a bit so I had to undo, all instances
of ActiveCell should read CurrCell.

"Tom Ogilvy" wrote:

Actually, ActiveCell never changes in your loop, so I doubt it actually does
what you want.

XL.Columns("J").Select
Dim CurCell As Object
For Each CurCell In XL.Selection
if isempty(curCell) then exit for
If CurCell.Value = "Y" Then
CurCell.Interior.ColorIndex = 6
CurCell.Font.Bold = True
End If
Next

or

Dim rng as Range, curcell as Range
Dim xl as application
set xl = Application
With xl.Activesheet
set rng = .Range(.Cells(1,"J"),.Cells(rows.count,"J").End(xl up))
End with
for each curcell in rng
if curcell.Value = "Y" then
curcell.Interior.colorIndex = 6
curcell.font.Bold = True
end if
next curcell

--
Regards,
Tom Ogilvy


"Richard" wrote:

I am having a diffifult time writing this bit of code and I am hoping someone
can help me out.

I have a large data set with varying row numbers each week. I have a column
J that I want to loop through and Bold and Colorthe cells with a "Y" value.
Here is my current code:

XL.Columns("J").Select
Dim CurCell As Object
For Each CurCell In XL.Selection
If XL.ActiveCell.Value = "Y" Then
XL.ActiveCell.Interior.ColorIndex = 6
XL.ActiveCell.Font.Bold = True
End If
Next

It works fine but takes a while because it selects the entire column (all
the way to the end). I don't need to go that far down, just to the last row
of data.

Can anyone show me how to select the entire column down to the last row that
contains data.

Thanks in advance.


Richard

VBA Loop Formatting Text Question
 
Thanks Tom. Works like a charm

"Tom Ogilvy" wrote:

Actually, ActiveCell never changes in your loop, so I doubt it actually does
what you want.

XL.Columns("J").Select
Dim CurCell As Object
For Each CurCell In XL.Selection
if isempty(curCell) then exit for
If CurCell.Value = "Y" Then
CurCell.Interior.ColorIndex = 6
CurCell.Font.Bold = True
End If
Next

or

Dim rng as Range, curcell as Range
Dim xl as application
set xl = Application
With xl.Activesheet
set rng = .Range(.Cells(1,"J"),.Cells(rows.count,"J").End(xl up))
End with
for each curcell in rng
if curcell.Value = "Y" then
curcell.Interior.colorIndex = 6
curcell.font.Bold = True
end if
next curcell

--
Regards,
Tom Ogilvy


"Richard" wrote:

I am having a diffifult time writing this bit of code and I am hoping someone
can help me out.

I have a large data set with varying row numbers each week. I have a column
J that I want to loop through and Bold and Colorthe cells with a "Y" value.
Here is my current code:

XL.Columns("J").Select
Dim CurCell As Object
For Each CurCell In XL.Selection
If XL.ActiveCell.Value = "Y" Then
XL.ActiveCell.Interior.ColorIndex = 6
XL.ActiveCell.Font.Bold = True
End If
Next

It works fine but takes a while because it selects the entire column (all
the way to the end). I don't need to go that far down, just to the last row
of data.

Can anyone show me how to select the entire column down to the last row that
contains data.

Thanks in advance.



All times are GMT +1. The time now is 11:27 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com