我的粘贴链接似乎不起作用,并且在指定的行上给我一个范围类的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
答案 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