ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Concatination error in macro (https://www.excelbanter.com/excel-programming/388190-concatination-error-macro.html)

Constantly Amazed

Concatination error in macro
 
Hi

In order to select an area limited by the number of rows in column A that
contain data in them I was provided with the following code:

Sub Select_area()

Dim LastRowUsed As Integer
Dim rngToCopy As Range

LastRowUsed = Range("A" & Rows.Count).End(xlUp).Row

Set rngToCopy = "A1:U" & LastRowUsed

End Sub

However, when I run this I get a compelation error: type mismatch and the
debugger highlights the & in the Set rngToCopy instruction which I read as
concatinating the number returned with the U to create a range.

Can anyone explain why this has failed and more importantly how to fix it?

As always thanks for any help

Norman Jones

Concatination error in macro
 
Hi Constantly,

Try replacing

Set rngToCopy = "A1:U" & LastRowUsed



with

Set rngToCopy = Range("A1:U" & LastRowUsed)


---
Regards,
Norman


"Constantly Amazed" wrote in
message ...
Hi

In order to select an area limited by the number of rows in column A that
contain data in them I was provided with the following code:

Sub Select_area()

Dim LastRowUsed As Integer
Dim rngToCopy As Range

LastRowUsed = Range("A" & Rows.Count).End(xlUp).Row

Set rngToCopy = "A1:U" & LastRowUsed

End Sub

However, when I run this I get a compelation error: type mismatch and the
debugger highlights the & in the Set rngToCopy instruction which I read as
concatinating the number returned with the U to create a range.

Can anyone explain why this has failed and more importantly how to fix it?

As always thanks for any help




Mike H

Concatination error in macro
 
You nearly got it, try this:-

Set rngToCopy = Range("A1:U5" & LastRowUsed)

Mike

"Constantly Amazed" wrote:

Hi

In order to select an area limited by the number of rows in column A that
contain data in them I was provided with the following code:

Sub Select_area()

Dim LastRowUsed As Integer
Dim rngToCopy As Range

LastRowUsed = Range("A" & Rows.Count).End(xlUp).Row

Set rngToCopy = "A1:U" & LastRowUsed

End Sub

However, when I run this I get a compelation error: type mismatch and the
debugger highlights the & in the Set rngToCopy instruction which I read as
concatinating the number returned with the U to create a range.

Can anyone explain why this has failed and more importantly how to fix it?

As always thanks for any help


Mike H

Concatination error in macro
 
oops typo

Set rngToCopy = Range("A1:U" & LastRowUsed)

Mike

"Mike H" wrote:

You nearly got it, try this:-

Set rngToCopy = Range("A1:U5" & LastRowUsed)

Mike

"Constantly Amazed" wrote:

Hi

In order to select an area limited by the number of rows in column A that
contain data in them I was provided with the following code:

Sub Select_area()

Dim LastRowUsed As Integer
Dim rngToCopy As Range

LastRowUsed = Range("A" & Rows.Count).End(xlUp).Row

Set rngToCopy = "A1:U" & LastRowUsed

End Sub

However, when I run this I get a compelation error: type mismatch and the
debugger highlights the & in the Set rngToCopy instruction which I read as
concatinating the number returned with the U to create a range.

Can anyone explain why this has failed and more importantly how to fix it?

As always thanks for any help


Dave Peterson

Concatination error in macro
 
Set rngToCopy = "A1:U" & LastRowUsed
should be something like:

Set rngToCopy = range("A1:U" & LastRowUsed)
or
Set rngToCopy = activesheet.range("A1:U" & LastRowUsed)

And I'd use
dim LastRowUsed as Long



Constantly Amazed wrote:

Hi

In order to select an area limited by the number of rows in column A that
contain data in them I was provided with the following code:

Sub Select_area()

Dim LastRowUsed As Integer
Dim rngToCopy As Range

LastRowUsed = Range("A" & Rows.Count).End(xlUp).Row

Set rngToCopy = "A1:U" & LastRowUsed

End Sub

However, when I run this I get a compelation error: type mismatch and the
debugger highlights the & in the Set rngToCopy instruction which I read as
concatinating the number returned with the U to create a range.

Can anyone explain why this has failed and more importantly how to fix it?

As always thanks for any help


--

Dave Peterson

Tom Ogilvy

Concatination error in macro
 
If this is the same situation you described yesterday, then that solution
wouldn't work to your specifications anyway. Here is a correction to what I
previously suggested:

Dim lastrow as Long, realLastRow as Long
Dim rngtocopy as Range
lastrow = cells(rows.count,1).End(xlup).row '<==
for i = lastrow to 4 step -1
if len(trim(cells(i,1).text)) 0 then
reallastrow = i
exit for
end if
Next
Set rngToCopy = Range("A4:A" & reallastrow)

--
Regards,
Tom Ogilvy




"Constantly Amazed" wrote:

Hi

In order to select an area limited by the number of rows in column A that
contain data in them I was provided with the following code:

Sub Select_area()

Dim LastRowUsed As Integer
Dim rngToCopy As Range

LastRowUsed = Range("A" & Rows.Count).End(xlUp).Row

Set rngToCopy = "A1:U" & LastRowUsed

End Sub

However, when I run this I get a compelation error: type mismatch and the
debugger highlights the & in the Set rngToCopy instruction which I read as
concatinating the number returned with the U to create a range.

Can anyone explain why this has failed and more importantly how to fix it?

As always thanks for any help


Constantly Amazed

Concatination error in macro
 
Hi Tom

Thanks for that. As your previous reply was some pages back I wasn't sure
if you would pick up on the error so I was trying to modify some other code
in the meantime. It works fine now when I put in a column reference.

If it is not too much trouble how can the code be further modified so it
looks for the last column which contains data as well as the last row.

Sorry if my second post caused any inconvenience.

"Tom Ogilvy" wrote:

If this is the same situation you described yesterday, then that solution
wouldn't work to your specifications anyway. Here is a correction to what I
previously suggested:

Dim lastrow as Long, realLastRow as Long
Dim rngtocopy as Range
lastrow = cells(rows.count,1).End(xlup).row '<==
for i = lastrow to 4 step -1
if len(trim(cells(i,1).text)) 0 then
reallastrow = i
exit for
end if
Next
Set rngToCopy = Range("A4:A" & reallastrow)

--
Regards,
Tom Ogilvy




"Constantly Amazed" wrote:

Hi

In order to select an area limited by the number of rows in column A that
contain data in them I was provided with the following code:

Sub Select_area()

Dim LastRowUsed As Integer
Dim rngToCopy As Range

LastRowUsed = Range("A" & Rows.Count).End(xlUp).Row

Set rngToCopy = "A1:U" & LastRowUsed

End Sub

However, when I run this I get a compelation error: type mismatch and the
debugger highlights the & in the Set rngToCopy instruction which I read as
concatinating the number returned with the U to create a range.

Can anyone explain why this has failed and more importantly how to fix it?

As always thanks for any help


Tom Ogilvy

Concatination error in macro
 
Uses column A to determine lastrow and row 1 to determine last column:

Sub AAA()
Dim lastrow As Long, realLastRow As Long
Dim lastColumn As Long, realLastColumn As Long
Dim rngtocopy As Range, i As Long
lastrow = Cells(Rows.Count, 1).End(xlUp).Row '<==
realLastRow = 4
For i = lastrow To 4 Step -1
If Len(Trim(Cells(i, 1).Text)) 0 Then
realLastRow = i
Exit For
End If
Next
lastColumn = Cells(1, "IV").End(xlToLeft).Column
realLastColumn = lastColumn
For i = lastColumn To 1 Step -1
If Len(Trim(Cells(1, i).Text)) 0 Then
realLastColumn = i
Exit For
End If
Next
Set rngtocopy = Range("A4", Cells(realLastRow, realLastColumn))
rngtocopy.Select
End Sub

--
Regards,
Tom Ogilvy

"Constantly Amazed" wrote:

Hi Tom

Thanks for that. As your previous reply was some pages back I wasn't sure
if you would pick up on the error so I was trying to modify some other code
in the meantime. It works fine now when I put in a column reference.

If it is not too much trouble how can the code be further modified so it
looks for the last column which contains data as well as the last row.

Sorry if my second post caused any inconvenience.

"Tom Ogilvy" wrote:

If this is the same situation you described yesterday, then that solution
wouldn't work to your specifications anyway. Here is a correction to what I
previously suggested:

Dim lastrow as Long, realLastRow as Long
Dim rngtocopy as Range
lastrow = cells(rows.count,1).End(xlup).row '<==
for i = lastrow to 4 step -1
if len(trim(cells(i,1).text)) 0 then
reallastrow = i
exit for
end if
Next
Set rngToCopy = Range("A4:A" & reallastrow)

--
Regards,
Tom Ogilvy




"Constantly Amazed" wrote:

Hi

In order to select an area limited by the number of rows in column A that
contain data in them I was provided with the following code:

Sub Select_area()

Dim LastRowUsed As Integer
Dim rngToCopy As Range

LastRowUsed = Range("A" & Rows.Count).End(xlUp).Row

Set rngToCopy = "A1:U" & LastRowUsed

End Sub

However, when I run this I get a compelation error: type mismatch and the
debugger highlights the & in the Set rngToCopy instruction which I read as
concatinating the number returned with the U to create a range.

Can anyone explain why this has failed and more importantly how to fix it?

As always thanks for any help


Constantly Amazed

Concatination error in macro
 
Tom

Thank you very much. I often have to select large areas of data so this
will prove extremely useful.

G

"Tom Ogilvy" wrote:

Uses column A to determine lastrow and row 1 to determine last column:

Sub AAA()
Dim lastrow As Long, realLastRow As Long
Dim lastColumn As Long, realLastColumn As Long
Dim rngtocopy As Range, i As Long
lastrow = Cells(Rows.Count, 1).End(xlUp).Row '<==
realLastRow = 4
For i = lastrow To 4 Step -1
If Len(Trim(Cells(i, 1).Text)) 0 Then
realLastRow = i
Exit For
End If
Next
lastColumn = Cells(1, "IV").End(xlToLeft).Column
realLastColumn = lastColumn
For i = lastColumn To 1 Step -1
If Len(Trim(Cells(1, i).Text)) 0 Then
realLastColumn = i
Exit For
End If
Next
Set rngtocopy = Range("A4", Cells(realLastRow, realLastColumn))
rngtocopy.Select
End Sub

--
Regards,
Tom Ogilvy

"Constantly Amazed" wrote:

Hi Tom

Thanks for that. As your previous reply was some pages back I wasn't sure
if you would pick up on the error so I was trying to modify some other code
in the meantime. It works fine now when I put in a column reference.

If it is not too much trouble how can the code be further modified so it
looks for the last column which contains data as well as the last row.

Sorry if my second post caused any inconvenience.

"Tom Ogilvy" wrote:

If this is the same situation you described yesterday, then that solution
wouldn't work to your specifications anyway. Here is a correction to what I
previously suggested:

Dim lastrow as Long, realLastRow as Long
Dim rngtocopy as Range
lastrow = cells(rows.count,1).End(xlup).row '<==
for i = lastrow to 4 step -1
if len(trim(cells(i,1).text)) 0 then
reallastrow = i
exit for
end if
Next
Set rngToCopy = Range("A4:A" & reallastrow)

--
Regards,
Tom Ogilvy




"Constantly Amazed" wrote:

Hi

In order to select an area limited by the number of rows in column A that
contain data in them I was provided with the following code:

Sub Select_area()

Dim LastRowUsed As Integer
Dim rngToCopy As Range

LastRowUsed = Range("A" & Rows.Count).End(xlUp).Row

Set rngToCopy = "A1:U" & LastRowUsed

End Sub

However, when I run this I get a compelation error: type mismatch and the
debugger highlights the & in the Set rngToCopy instruction which I read as
concatinating the number returned with the U to create a range.

Can anyone explain why this has failed and more importantly how to fix it?

As always thanks for any help



All times are GMT +1. The time now is 05:35 PM.

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