2017-12-01 2 views
0

Excel VBAマクロを作成していますが、タスクの1つはシートのデータの一部を別のシートにコピーすることです。しかし、最後の列なしで、私はConsolidatedRowをコピーしたいVBAの最後の列を除いて行をコピーする

Dim ConsolidatedRow As Excel.Range 
Set ConsolidatedRow = ConsolidatedSheet.Range("A" & C).EntireRow 
... 
ConsolidatedRow.Copy Destination:=ResultSheet.Range("A" & ResultRowIndex) 

私は現在、どのコピー行全体の罰金を(Cが行インデックスである)、以下を使用します。この最後の列は宣言とコピーの間の他の操作で使用されるので、理想的な解決策はコピーステートメントの変更です。私はConsolidatedRowの範囲を更新するオフセットを試しましたが、他にもたくさんの運があります。あなたは、私が最後に使用セルの位置を特定するためにRange.Endプロパティを使用することを好む後

Set ConsolidatedRow = Intersect(ConsolidatedSheet.UsedRange, ConsolidatedRow) 
Set ConsolidatedRow = ConsolidatedRow.Resize(1, ConsolidatedRow.Columns.Count - 1) 
+0

サイズ変更を試しましたか? – QHarr

+0

ColsolidatedRow.Resize(ColsolidatedRow.Rows.Count、ColsolidatedRow.Columns.Count - 1) – QHarr

+0

Resizeは悲しいことに機能しませんでした... –

答えて

2

を設定した2つの行を追加し、このワークシートにこのconsolidatedRow背後の列を使用していないと仮定すると

+0

これはうまくいきました、ありがとう! –

1

。あなたの行があなたのシートの他のものまで伸びていないかどうかを助けます。以下に設定ConsolidatedRowコマンドを置き換えます。これは、あなたのデータにギャップがないと仮定し

With ConsolidatedSheet 
    CopyExtent = .Range("A" & C).End(xlToRight).Column - 1 
    Set ConsolidatedRow = .Range(.Cells(C, 1), .Cells(C, CopyExtent)) 
End With 

。コピーしたセクションに空白のセルが含まれている場合は、次のように変更します。

CopyExtent = ConsolidatedSheet.Cells(C, .Columns.Count).End(xlToLeft).Column - 1 

+0

私は列を使用しています。 –

関連する問題