这是我的问题。我有两个Range对象。例如,
Set rg3 = Range("B2")
Set rg4 = Range("B3000")
我想这样做
Range("rg3:rg4").PasteSpecial (xlPasteAll)
但它显示错误。如何通过两个范围对象选择区域。 范围(" B2:B3000")在我的情况下是不正确的,因为这两个范围总是由偏移函数更新。
感谢您的帮助!!!
答案 0 :(得分:1)
当您输入Range(
时,intellisense将显示Range(Cell1, Cell2) as Range
,表示Range对象需要两个单元格。
因此,看到rg3和rg4是两个单元格,您可以使用Range(rg3, rg4)
。
您正在使用xlPasteAll
,因此您可以使用RangeBeingCopiedReference.Copy Destination:=Range(rg3,rg4)
编辑 - 正如@Robin所说,抵消时你的意思是什么?
编辑2:
如果您想循环遍历某个范围,那么使用Cells
会更容易,因为它接受列号而不是列字母。
此示例将A:A列一次复制到U:AD一列。
Sub Test()
Dim rg3 As Range, rg4 As Range
Dim x As Long
With ThisWorkbook.Worksheets("Sheet1")
For x = 1 To 10
.Range(.Cells(2, x), .Cells(3000, x)).Copy _
Destination:=.Range(.Cells(2, x + 20), .Cells(3000, x + 20))
Next x
End With
End Sub
另外 - 在WITH... END WITH
- https://msdn.microsoft.com/en-us/library/wc500chb.aspx
答案 1 :(得分:1)
我希望更好地了解您对更好帮助的需求
首先,因为您使用 mySkypeUri="xyz@gmail.com"
Uri skypeUri = Uri.parse("sip:" + mySkypeUri);
Intent skypeIntent = new Intent(Intent.ACTION_VIEW, skypeUri);
startActivity(skypeIntent);
我相信您在循环外设置了一个源范围,并在后一个移动粘贴范围内多次粘贴
你还解释了" rg3和rg4在for循环中,每次它将通过offset(0,1)"
移动到下一个colmn所以这最初会导致:
.PasteSpecial xlPasteAll
但这也是无用的长而慢,因为你可以简单地写:
Option Explicit
Sub main()
Dim copyRng As Range, rg3 As Range, rg4 As Range
Dim i As Long
Set rg3 = Range("B2") '<~~ your rg3 range setting
Set rg4 = Range("B3000") '<~~ your rg4 range setting
Set copyRng = ... '<~~ your setting of the "source" range to be copied once and pasted many
copyRng.Copy '<~~ copy "source" Range once ...
With Range(rg3, rg4) '<~~ ... set your initial "target" range ...
For i = 1 To 10
.Offset(, i).PasteSpecial xlPasteAll '<~~ ... and paste "source" range offseting "target" once
Next i
End With
End Sub
那么您的真正需求是什么?