Selecting sheet 2

W

Withnails

I have a Sub that grabs data from sheet1 and i cant get it to grab the data
(in column K) from sheet2, even when i add Worksheet("Sheet2") as shown
below...?

How can I use this macro to grab the data from sheet2, not sheet1?

Sub ReLargeMoves()
Dim c As Range, rng As Range, lngRow As Long
Set rng = Worksheets("Sheet2").Range("K2:K" & Cells(Cells.Rows.Count,
"K").End(xlUp).Row)
For Each c In rng
If WorksheetFunction.Large(rng, 1) = c.Value Or _
WorksheetFunction.Large(rng, 2) = c.Value Or _
WorksheetFunction.Large(rng, 3) = c.Value Or _
WorksheetFunction.Small(rng, 1) = c.Value Or _
WorksheetFunction.Small(rng, 2) = c.Value Or _
WorksheetFunction.Small(rng, 3) = c.Value Then _
lngRow = lngRow + 1: Rows(c.Row).Copy
Sheets("Sheet3").Range("A15").Rows(lngRow)
Next
End Sub
 
J

Jacob Skaria

Try

Sub ReFormat2()
Dim c As Range, rng As Range, lngRow As Long
Set rng = Worksheets("Sheet2").Range("K2:K" & _
Cells(Cells.Rows.Count, "K").End(xlUp).Row)
For Each c In rng
If WorksheetFunction.Large(rng, 1) = c.Value Or _
WorksheetFunction.Large(rng, 2) = c.Value Or _
WorksheetFunction.Large(rng, 3) = c.Value Or _
WorksheetFunction.Small(rng, 1) = c.Value Or _
WorksheetFunction.Small(rng, 2) = c.Value Or _
WorksheetFunction.Small(rng, 3) = c.Value Then _
lngRow = lngRow + 1: Worksheets("Sheet2").Rows(c.Row).Copy _
Sheets("Sheet3").Rows(lngRow)
Next
End Sub

If this post helps click Yes
 
J

Jacob Skaria

Check your previous post. Replace

<lngRow = lngRow + 1: Rows(c.Row).Copy
<Sheets("Sheet3").Range("A15").Rows(lngRow

with

lngRow = lngRow + 1: Sheets("Sheet2").Rows(c.Row).Copy _
Sheets("Sheet3").Range("A15").Rows(lngRow)

If this post helps click Yes
 
M

Mike H

Hi,

This works fine for me

Sub ReLargeMoves()
Sheets("Sheet2").Activate
Dim c As Range, rng As Range, lngRow As Long
Set rng = Worksheets("Sheet2").Range("K2:K" & Cells(Cells.Rows.Count,
"K").End(xlUp).Row)

For Each c In rng
If WorksheetFunction.Large(rng, 1) = c.Value Or _
WorksheetFunction.Large(rng, 2) = c.Value Or _
WorksheetFunction.Large(rng, 3) = c.Value Or _
WorksheetFunction.Small(rng, 1) = c.Value Or _
WorksheetFunction.Small(rng, 2) = c.Value Or _
WorksheetFunction.Small(rng, 3) = c.Value Then _
lngRow = lngRow + 1: Rows(c.Row).Copy
Sheets("Sheet3").Range("A15").Rows(lngRow).PasteSpecial
Next
End Sub

Mike
 
R

Rick Rothstein

Set rng = Worksheets("Sheet2").Range("K2:K" & Cells(Cells.Rows.Count,
"K").End(xlUp).Row)

I see a possible problem with the line of code above. While the range being
assigned to the rng variable is from Sheet2, the "last row" calculation will
be from the active sheet at the time the code line is executed. Why? Because
the Cells property call does not reference Sheet2, so its chain of
properties will draw from the active sheet and thus the last row in Column K
on the active sheet is what will be concatenated onto your "K2:K" address.
You can solve this problem by concatenating the worksheet reference onto to
it...

Set rng = Worksheets("Sheet2").Range("K2:K" & Worksheets("Sheet2"). _
Cells(Cells.Rows.Count, "K").End(xlUp).Row)
 
R

Ron de Bruin

Note that

Cells(Cells.Rows.Count,
"K").End(xlUp).Row)

Will use the activesheet

add the sheet name before Cells
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

Inaccurate count with code 6
Copy code failing 2
Excel VBA 1
Copy filtered data to sheet 2 1
Code condition 3
for next loop question 3
Conflict 8
ELSEIF for multiple if ?? 5

Top