View Single Post
  #14   Report Post  
Posted to microsoft.public.excel.programming
ExcelMonkey ExcelMonkey is offline
external usenet poster
 
Posts: 553
Default Can select range of sheet

So I am having one hell of a bad day here in VBA. I think I am going to put
my fist throug my screen. WHY cannot I select this range tbl????? The code
gets down the line tbl.Select and then I get a Run Time Error 1004 Select
method of Range Class failed.

I have used your code instead, and replaced the variable rng with tbl. Have
I dimensioned the variable properly. Its dim as Object. I have not been
able to Select anyting with this code. Driving me crazy.


Private Sub CommandButton1_Click()
Dim FName As Variant
Dim ExtractedFileName As Variant
Dim ThisFileName As Variant
Dim FirstEmptyRow As Double
Dim tbl As Object
Dim Revisedtble As Object
Dim ImportSheet As Worksheet

ThisFileName = ThisWorkbook.Name
'ImportSheet = ThisWorkbook.Sheets(2).Name

FName = Application.GetOpenFilename("AÂ*ll files (*.*),*.*")
If FName = False Then
' user clicked cancel
Else

Workbooks.Open Filename:=FName

'Extract file Name from full path
ExtractedFileName = sFileName(FName)
Windows(ExtractedFileName).Activate
Worksheets("Template").Select

'Select First Cell in Target file sheet
Set tbl = Range("A2").CurrentRegion
Set tbl = tbl.Offset(1).Resize(tbl.Rows.Count - 1)
tbl.Select


'Copy Range
tbl.Copy

Windows(ThisFileName).Activate
Worksheets("Import Data").Select

'Find and Select Paste Cell of This file
FirstEmptyRow =
Application.WorksheetFunction.CountA(Worksheets("I mport Data").Range("A:A"))
Worksheets("Import Data").Range("A1").Offset(FirstEmptyRow, 0).Select
ActiveSheet.Paste

End If
End Sub



"Norman Jones" wrote:

Hi ExcelMonkey,

Consequently, when you later select tbl, you select the original tbl
range, which has not changed.


should have read:

'========================
Consequently, when you later copy tbl, you copy the original tbl range,
which has not changed
'========================

I inadvertently used 'select' instead of 'copy' and, although this does not
in any way change the basic proposition, it may well serve to confuse.


---
Regards,
Norman



"Norman Jones" wrote in message
...
Hi ExcelMonkey,

The line:

tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1,
tbl.Columns.Count).Select


merely selects a subset of the tbl range; it does not change tbl.

Consequently, when you later select tbl, you select the original tbl
range, which has not changed.

Conversely, my in my code:

Set rng = Range("A2").CurrentRegion
Set rng = rng.Offset(1).Resize(rng.Rows.Count - 1)
rng.Select


the rangg which corresponds to rng is changed by my second line
assignment, and, consequently, the altered range is selected in line 3.

I used the rng variable. in accordance with your original code. By all
means change rng in my code to tbl.

---
Regards,
Norman



"ExcelMonkey" wrote in message
...
So this code worked for me:

Set tbl = Worksheets("Template").Range("A2").CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1,
tbl.Columns.Count).Select

However, I later want to copy the data in this range. I do the
following:

tbl.Copy

However when i paste it. I get the entire range including Row 1. I was
using the resize method as I thought I would adjust the range I wanted to
copy. So although it resized it and selected this resized range, it
copies
the original. How is this?????


Thanks




"Norman Jones" wrote:

Hi ExcelMonkey,

Or:

Dim rng As Range

Set rng = Range("A2").CurrentRegion
Set rng = rng.Offset(1).Resize(rng.Rows.Count - 1)
rng.Select



---
Regards,
Norman



"Norman Jones" wrote in message
...
Hi ExcelMonkey,

Perhaps:

Rng.CurrentRegion.Select

---
Regards,
Norman



"ExcelMonkey" wrote in message
...
That doesn't work either. Note I have replaced my lines of code with
yours
below. Interestingly enough when I go to the immediate window I get:

?rng.End(xlToright).Address
$G$2
?rng.End(xlDown).Address
$A$24

This seems to make sense. It seems to be failing on .Select part of
the
statment.



Private Sub CommandButton1_Click()
Dim FName As Variant
Dim ExtractedFileName As Variant
Dim ThisFileName As Variant
Dim FirstEmptyRow As Double
Dim rng As Range

ThisFileName = ThisWorkbook.Name

FName = Application.GetOpenFilename("AÂ*ll files (*.*),*.*")
If FName = False Then
' user clicked cancel
Else

Workbooks.Open Filename:=FName

'Extract file Name from full path
ExtractedFileName = sFileName(FName)
Windows(ExtractedFileName).Activate

'Select First Cell in Target file sheet
Worksheets("Template").Range("A2").Select

'Choose Used Range of target sheet
Set rng = Worksheets("Template").Range("A2")
Range(rng, rng.End(xlDown).End(xlToRight)).Select

'Range(Selection, Selection.End(xlDown)).Select
'Range(Selection, Selection.End(xlToRight)).Select

End If
End Sub

Function sFileName(sFullname As Variant) As String
If InStrRev(sFullname, "\") = 0 Then
sFileName = sFullname
Else
sFileName = Mid$(sFullname, _
InStrRev(sFullname, "\") + 1)
End If
End Function



"Mangesh Yadav" wrote:

Your code works for me.

You could also use:

Set rng = Worksheets("Sheet1").Range("A2")
Range(rng, rng.End(xlDown).End(xlToRight)).Select


Mangesh



"ExcelMonkey" wrote in
message
...
I am trying to select cell A2 and the SHIFT-CNTL-Right and
SHIFT-CNTL-Down.
When I recored the macro the code is as seen below under the
comment
'Choose Used Range of target sheet. However when I try to run it,
I
get
an
Run Time Error 1004. ("Method Range of Object _Worksheet failed")


Why is this?

'Select First Cell in Target file sheet
Worksheets("Template").Range("A2").Select

'Choose Used Range of target sheet
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select

Thanks