将用户定义的范围插入另一个工作表

时间:2018-11-06 09:07:53

标签: excel vba excel-vba

我设置了一个范围,可以用msg框和rng.address来显示它,但是我无法与i复制/插入或做aynthing。在我的代码段中,我尝试将其复制,但是以后,我总是需要在另一张纸的第一列之后插入范围。

这是一个特殊的问题。我敢肯定这很容易,或者我只是误会了一些东西。我也不明白

Dim rng As Range


Set rng = Application.InputBox("Please choose a range", "Obtain Range Object", Type:=8)

 If MsgBox("Your choice " & rng.Address & " ?", vbYesNo, "Confirm") = vbYes Then
    GoTo continue:
    Else
    GoTo retry:
    End If

continue:


Worksheets("Sheet source").Range(rng).Copy Worksheets("sheet destination").Range("A1").Paste

2 个答案:

答案 0 :(得分:1)

您声明了Dim rng As Range,因此已经是特定工作表中的范围,因此Range(rng)不起作用,因为Range()正在等待地址作为参数(而不是范围)。

此外,如果您在一行中使用.Copy语法(将目标作为参数),则不需要.Paste

应该是

rng.Copy Worksheets("sheet destination").Range("A1")

也使用Goto(在错误处理之外)是非常不好的做法。而是使用类似的内容:

Sub AskMe()
    Dim Rng As Range

    Do
        On Error Resume Next 'next line throws error if user presses cancel so we hide **all** error messages now (and turn them on later!)
        Set Rng = Application.InputBox("Please choose a range", "Obtain Range Object", Type:=8)
        If Err.Number <> 0 Then Exit Sub 'if an error occurred then the user pressed cancel (so we exit)
        On Error GoTo 0 'always re-activate error reporting! Otherwise all error messages stay hidden.
    Loop Until MsgBox("Your choice " & Rng.Address & " ?", vbYesNo, "Confirm") = vbYes
    'repeat asking for a range until yes is pressed

    Rng.Copy Worksheets("sheet destination").Range("A1")
End Sub

答案 1 :(得分:1)

要复制范围,您可以按以下步骤进行操作:

id  parentNode_id   productStructure_id referenceProduct_id
1   NULL    NULL    NULL
2   NULL    2   96
3   2   2   127
4   3   2   98
5   4   2   335
6   5   2   336
7   5   2   337
8   4   2   248
9   8   2   249
10  8   2   250
11  4   2   255
12  11  2   256
13  4   2   976
14  13  2   977
15  4   2   982
16  15  2   983
17  15  2   984
18  4   2   982
19  18  2   983
20  18  2   984
21  3   2   99
22  3   2   100