我设置了一个范围,可以用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
答案 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