2016-08-12 28 views
3

別のシートにコピーする必要がある2つの列の行数を動的に拡張するにはどうすればよいですか?そうVBAの動的不連続範囲Excel

Dim totrows As Integer 
With ThisWorkbook.Worksheets("Sheet1") 
    totrows = .Range("A" & .Rows.Count).End(xlUp).Row 
End With 

次に、私が関心の2つの列を拡張しようとしています(「B」と「G」):

まず、私はtotrowsに含めると、保存する必要がある行の数を特定します範囲にはtotrows行が含まれています。静的例えば、totrows = 100場合は、その後、私が持っているでしょう:

With ThisWorkbook.Worksheets("Sheet1") 
    .Range("B2:B102,G2:G102").copy 
End With 

I、その後で私の第二のシートに貼り付け:

ThisWorkbook.Worksheets("Sheet2").Range("A2").Paste 
+0

ありがとうございました!私は運がなければ '&'を試していました - 私は引用符の外にコンマを入れていました(!) – Bendy

答えて

3
.Range("B2:B102,G2:G102").copy 

.Range("B2:B" & totrows & ",G2:G" & totrows).Copy 
のように記述することができます
1

.Copyまたは.Pasteを使用しない別の方法は、次のようになります。

Sub Copy() 
    Dim wb As Workbook 
    Dim wsCopy As Worksheet 
    Dim wsPaste As Worksheet 
    Dim totrows As Integer 

    Set wb = Workbooks("Book1.xlsm") 
    Set wsCopy = wb.Worksheets("Sheet1") 
    Set wsPaste = wb.Worksheets("Sheet2") 
    totrows = wsCopy.Range("A" & wsCopy.Rows.Count).End(xlUp).Row 

    wsPaste.Range("A1:B" & totrows) = wsCopy.Range("A2:A" & totrows, "G2:G" & totrows).Value 


End Sub 

この方法で、値を直接Rangeに入れます。

関連する問題