粘贴链接VBA代码不起作用

时间:2015-12-24 02:47:34

标签: excel vba excel-vba

我的粘贴链接似乎不起作用,并且在指定的行上给我一个范围类的select方法失败。我似乎无法诊断此错误。

Sub CustomizedInputFixedoutputnotworking()

 Dim rng As Range, _
 inp As Range, _
 ws As Worksheet

Set inp = Selection
On Error Resume Next
Set rng = Application.InputBox("Copy to", Type:=8)
On Error GoTo 0
If TypeName(rng) <> "Range" Then
    MsgBox "Cancelled", vbInformation
    Exit Sub
Else

Worksheets("Sheet 2").Range("B2:N5").Select ' Code does not work at this line

Worksheets("Sheet 2").Paste Links:=True

End If
Application.CutCopyMode = False

End Sub

2 个答案:

答案 0 :(得分:1)

我相信您的问题是您选择了文字但从未将其复制到剪贴板。即使你复制了它,.Select方法也会改变你的目的地。

我希望对.Copy方法进行简单更改即可解决您的问题。如果没有,请告诉我:

Worksheets("Sheet2").Range("B2:N5").Copy 
Worksheets("Sheet2").Paste Link:=True

- 编辑 -

根据评论所选范围是“复制”(来源)而B2:N5是目的地,请尝试:

rng.Copy

Worksheets("Sheet2").Range("B2:N5").Select
Worksheets("Sheet2").Paste Link:=True

答案 1 :(得分:1)

试试这段代码:

Sub CustomizedInputFixedoutputnotworking()

 Dim rng As Range, _
 inp As Range, _
 ws As Worksheet

Set inp = Selection
On Error Resume Next
Set rng = Application.InputBox("Copy to", Type:=8)
On Error GoTo 0
If TypeName(rng) <> "Range" Then
    MsgBox "Cancelled", vbInformation
    Exit Sub
Else

  rng.Copy ' add this line to copy the range that user selected before (with InputBox)
  Worksheets("Sheet 2").Activate ' add this line to activate the target worksheet, because select method (the next line) only work in the active sheet
  Range("B2:N5").Select
  ActiveSheet.Paste Link:=True


End If
Application.CutCopyMode = False

End Sub

注意:如果用户为示例A1和B2选择非连续范围,复制方法将失败,通过使用简单方法(不是完整方式)来避免:

Set rng = Union(rng, rng)
If rng.Areas.Count > 1 Then Exit Sub