Solved

VBA Selecting range only containing data

Posted on 2016-07-25
12
88 Views
Last Modified: 2016-07-27
HI Guys

Im using this bit of code which I thought would select Column A to FF and go to the last row containing data in this range.

Sub selectrange()
Dim r As Long
r = Range(Selection, Selection.End(xlDown)).Row
Range("A" & Selection.Row, "FF" & r).Select
End Sub

It is only selecting the first row for some reason and Im not sure what the issue is.

Would you be able to help me on this?

The attached example should result in the range A1:FF31 being selected when the code is run but unfortunately, im missing something ..

J
Book1.xlsm
0
Comment
Question by:spicecave
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
  • +3
12 Comments
 
LVL 51

Expert Comment

by:Rgonzo1971
ID: 41727743
Hi,

pls try ( in your code the row is the first row of the range=1)
Sub copyrange()
Dim r As Long
r = Selection.End(xlDown).Row
Range("A" & Selection.Row, "FF" & r).Select
End Sub

Open in new window

Regards
0
 
LVL 43

Expert Comment

by:Saqib Husain, Syed
ID: 41727744
r = Selection.End(xlDown).Row
0
 

Author Comment

by:spicecave
ID: 41727754
HI Guys

Thank you for the quick response

It work great except is there an addition to the code whereby it ALWAYS selects from cell A1 and the subsequent range containing data?

At the moment, if I click in cell d8 and run the code, it only selects the rows and range starting below this location?

If not, no problems I can work with this

Regards
J
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 51

Expert Comment

by:Rgonzo1971
ID: 41727755
then try

Sub copyrange()
Dim r As Long
r = Selection.End(xlDown).Row
Range("A1", "FF" & r).Select
End Sub

Open in new window

0
 

Author Comment

by:spicecave
ID: 41727767
HI RG

I tried the A1 change but what happens is if you click in A1 and then run the code, it works perfect.

If you click anywhere else on the sheet and run the code, it selects the WHOLE sheet from cell A1

However, no problems, I can work with this

Thank you for your help

J
0
 
LVL 33

Expert Comment

by:Rob Henson
ID: 41727791
Are columns A to FF the only used columns?

If so just selecting Used.Range will do the same:

ActiveSheet.UsedRange.Select

Open in new window


Alternatively, determine the last row using LastCell:

LR = ActiveCell.SpecialCells(xlLastCell).Row

Open in new window

0
 
LVL 33

Expert Comment

by:Rob Henson
ID: 41727804
What are you doing with the range once it is selected?

It is often not necessary to use the .Select method with a range; you may be able to do the actions without selecting the range.

Thanks
Rob H
0
 
LVL 51

Assisted Solution

by:Rgonzo1971
Rgonzo1971 earned 125 total points
ID: 41727904
or maybe
Sub copyrange()
ActiveCell.CurrentRegion.Select
End Sub

Open in new window

0
 
LVL 3

Accepted Solution

by:
AL_XResearch earned 250 total points
ID: 41727956
Try the below (removing the final 'select' and replacing it with your processing code):
Sub selectLastRow()

    Dim wksTargetSheet As Worksheet
    
    Dim rngAllData As Range
    Dim rngLastRow As Range
    
    Set wksTargetSheet = ActiveSheet
    
    Set rngAllData = wksTargetSheet.Range("A1").CurrentRegion
    
    Set rngLastRow = rngAllData.Offset(rngAllData.Rows.Count - 1).Resize(1)
    
    rngLastRow.Select ' Or whatever you want to do with the row
    
End Sub

Open in new window

0
 
LVL 19

Assisted Solution

by:Roy_Cox
Roy_Cox earned 125 total points
ID: 41728035
CurrentRegion will select all cells in a sheet that contiguous to each other surrounding a specified cell

UsedRange is the area of the sheet that has been 'Used' for any purpose, since it was last saved.

I would think that currentRegion is probably the best choice for you, e.g.

MsgBox Range("A1").CurrentRegion.address
MsgBox ActiveSheet.UsedRange.address

Open in new window

0
 

Author Closing Comment

by:spicecave
ID: 41731909
Cannot thank you guys enough

All suggestions were perfect in their own merit

I have one happy finance team !
0
 
LVL 19

Expert Comment

by:Roy_Cox
ID: 41732380
Pleased to help.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
autofill formulas using macro 8 53
Cannot locate cell 15 42
Vlookup Help 3 29
Assigning multiple macro in one command button 9 24
Introduction While answering a recent question (http:/Q_27311462.html), I created an alternative function to the Excel Concatenate() function that you might find useful.  I tested several solutions and share the results in this article as well as t…
This code takes an Excel list of URL’s and adds a header titled “URL List”. It then searches through all URL’s in column “A”, looking for duplicates. When a duplicate is found, it is moved to the top of the list. The duplicate URL’s are then highlig…
This Micro Tutorial will demonstrate in Microsoft Excel how to add style and sexy appeal to horizontal bar charts.
This Micro Tutorial demonstrates in Microsoft Excel how to consolidate your marketing data by creating an interactive charts using form controls. This creates cool drop-downs for viewers of your chart to choose from.

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question