Excel VBA复制具有可变行号和列号的单元块

我正在尝试select具有行和列号作为variables的单元格块。 让我们从一个静态开始: 在这里输入图像描述

我已经得到合并单元格的行数。 现在我正在尝试将用例的完整块复制到新工作表(与用例名称相同)。 所以例如我试图复制范围(“C7:K11”)的用例随机1到工作表随机1。

唯一的问题,我遇到这里是复制这个范围与varibale行号和列号。 但是,此静态代码以及带有dynamicvariables的代码不起作用: –

shtPricing.Range(Cells(7, 3), Cells(9, 11)).Copy xWb.Worksheets(UsecaseTrail).Range(Cells(2, 3), Cells(4, 11)).PasteSpecial xlPasteValues 

准确的代码:

 Dim lColumn As Long Dim RowCount As Long Dim ColumnCounter As Long Dim RowCounter As Long Dim tempUseCase As String lColumn = xWb.Worksheets("Pricing").Cells(6, Columns.Count).End(xlToLeft).Column For RowCounter = 7 To 25 RowCount = xWb.Worksheets("Pricing").Range("B" & RowCounter).MergeArea.Rows.Count If RowCount > 1 Then If InStr(1, CStr(xWb.Worksheets("Pricing").Range("B" & RowCounter).Value), UsecaseTrail) Then xWb.Worksheets("Pricing").Range(Cells(RowCounter, 3), Cells(RowCounter + RowCount - 1, lColumn)).Copy xWb.Worksheets(UsecaseTrail).Range(Cells(2, 3), Cells(2 + RowCount - 1, lColumn)).PasteSpecial xlPasteValues End If RowCounter = RowCounter + RowCount - 1 'note -1 here End If Next RowCounter 

请注意,一切工作正常。 除了具有可变Rowcounter和columncounter值的复制粘贴function。 只有通过下面的代码将是非常有帮助的: –

 xWb.Worksheets("Pricing").Range(Cells(RowCounter, 3), Cells(RowCounter + RowCount - 1, lColumn)).Copy xWb.Worksheets(UsecaseTrail).Range(Cells(2, 3), Cells(2 + RowCount - 1, lColumn)).PasteSpecial xlPasteValues 

错误: 在这里输入图像描述

考虑:

 Dim r1 As Range, r2 As Range With shtPricing Set r1 = Range(.Cells(7, 3), .Cells(9, 11)) End With With xWb.Worksheets(UsecaseTrail) Set r2 = Range(.Cells(2, 3), .Cells(4, 11)) End With r1.Copy r2.PasteSpecial xlPasteValues 

编辑#1:

这是一个经过testing的例子:

 Sub ytrewq() Dim shtPricing As Worksheet Dim r1 As Range, r2 As Range Dim UsecaseTrail As String Dim xWb As Workbook Set shtPricing = Sheets("Sheet1") Set xWb = ThisWorkbook UsecaseTrail = "Sheet2" With shtPricing Set r1 = Range(.Cells(7, 3), .Cells(9, 11)) End With With xWb.Worksheets(UsecaseTrail) Set r2 = Range(.Cells(2, 3), .Cells(4, 11)) End With r1.Copy r2.PasteSpecial xlPasteValues End Sub 

请注意Cells()上的