Discussione:
macro riferimenti relativi
(troppo vecchio per rispondere)
m***@gmail.com
2016-12-07 19:21:44 UTC
Permalink
Buonasera, sto cercando di creare una macro che in sostanza mi deve evidenziare un range (dalla cella A1 ... all'ultima cella scritta in colonna E) e me la copi nel foglio precedente. Ho provato a registrare la seguente macro:

ActiveCell.Offset(0, 4).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveCell.Offset(0, -4).Range("A1:E40").Select
ActiveCell.Activate
Selection.Cut
ActiveSheet.Previous.Select
ActiveCell.Offset(0, 4).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, -4).Range("A1").Select
ActiveSheet.Paste
Range("A1").Select

Il range non è sempre A1:E40 .... come faccio a dargli come riferimento l'ultima cella ?

Spero di essere stato abbastanza chiaro.

Ringrazio anticipatamente
Norman Jones
2016-12-08 00:23:03 UTC
Permalink
Ciao Marco,
Post by m***@gmail.com
Buonasera, sto cercando di creare una macro che in sostanza mi
deve evidenziare un range (dalla cella A1 ... all'ultima cella
scritta in colonna E) e me la copi nel foglio precedente. Ho
ActiveCell.Offset(0, 4).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveCell.Offset(0, -4).Range("A1:E40").Select
ActiveCell.Activate
Selection.Cut
ActiveSheet.Previous.Select
ActiveCell.Offset(0, 4).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, -4).Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Il range non è sempre A1:E40 .... come faccio a dargli come riferimento l'ultima cella ?
Spero di essere stato abbastanza chiaro
Con i pochi dettagli indicati del tuo scenario, forse prova qualcosa del
genere:

'=========>>
Option Explicit

'--------->>
Public Sub Tester()
Dim WB As Workbook
Dim srcSH As Worksheet, destSH As Worksheet
Dim srcRng As Range, destRng As Range
Dim LRow As Long

Const sFoglio As String = "Foglio2" '<<=== Modifica
Const sDestCella As String = "A1" '<<=== Modifica

Set WB = ThisWorkbook
Set srcSH = WB.Sheets("Foglio2")
Set destSH = srcSH.Previous

With srcSH
LRow = LastRow(srcSH, .Columns("A:A"))
Set srcRng = .Range("A1:E" & LRow)
End With

Set destRng = destSH.Range(sDestCella)
srcRng.Copy Destination:=destRng

End Sub

'--------->>
Public Function LastRow(SH As Worksheet, _
Optional Rng As Range, _
Optional minRow As Long = 1)
If Rng Is Nothing Then
Set Rng = SH.Cells
End If

On Error Resume Next
LastRow = Rng.Find(What:="*", _
after:=Rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
If LastRow < minRow Then
LastRow = minRow
End If
End Function
'<<=========







===
Regards,
Norman
Bruno Campanini
2016-12-08 00:34:17 UTC
Permalink
Post by m***@gmail.com
Buonasera, sto cercando di creare una macro che in sostanza mi deve
evidenziare un range (dalla cella A1 ... all'ultima cella scritta in colonna
E) e me la copi nel foglio precedente. Ho provato a registrare la seguente
ActiveCell.Offset(0, 4).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveCell.Offset(0, -4).Range("A1:E40").Select
ActiveCell.Activate
Selection.Cut
ActiveSheet.Previous.Select
ActiveCell.Offset(0, 4).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, -4).Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Il range non è sempre A1:E40 .... come faccio a dargli come riferimento l'ultima cella ?
Spero di essere stato abbastanza chiaro.
Ringrazio anticipatamente
Set SourceRange = Range([A1], [A1].End(xlToRight).End(xlDown))

Eventualmente [Sheet2!A1] etc

Bruno

Continua a leggere su narkive:
Loading...