table.Copy , shA.target
должно быть:
table.Copy target
, поскольку:
параметр Destination
является первым из метода Copy()
, а запятые необходимы для разграничения последующих (если есть) параметров
target
- это объект Range
, следовательно, он уже полностью квалифицирован до родительского листа и объекта рабочей книги
Более того, я думаю,
If Not answ Is Nothing Then
должно быть:
If Not Target Is Nothing Then
, поэтому вот пересмотренный код
Sub PasteMacro()
Dim target As Range
Dim table As Range
Dim i As Long
Dim weight As Double
Dim thickness As Double
Dim Stiff As Double
Dim shA As Worksheet
With ActiveWorkbook.Worksheets("User sheet comp data")
' search for the first non 0 ligne in the table
i = 19
Do Until .Range("M" & i) <> 0
i = i - 1
Loop
MsgBox .Cells(i, 13).Address
'the table to copy
Set table = .Range(Cells(1, 2), Cells(i, 15))
weight = .Range("O20").Value2
thickness = .Range("M20").Value2
Stiff = .Range("M21").Value2
On Error Resume Next
Set target = Application.InputBox(Prompt:="Please select a destination Cell where you want to Paste ", Type:=8)
On Error GoTo 0
If Not target Is Nothing Then table.Copy target 'copy the table and paste it
End With
End Sub
Как вы можете видеть все объекты диапазона (Range, Cells) ссылаются на ActiveWorkbook.Worksheets("User sheet comp data")
("MilestoneDueDate")
через эту точку (.) перед ними
таким образом, вы можете быть уверены, что не потеряете контроль над тем, какой диапазон рассматривается на каком листе