2016-05-16 2 views
1

このフォーラムで指摘されているさまざまな方法を使用していますが、いずれも機能しないようです。Excel 2013:マクロを使用して同じブック内の別のシートにデータをコピーして後で追加します

LIBRARY.xlsmというブックがあります。

このワークブックには、2つのワークシートが含まれています:計算機とCUTS。

ワークシートCALCULATORには、INPUTとOUTPUTという2つのテーブルがあります。

データをINPUTに入力すると、値が計算され、OUTPUTに自動的に入力されます。

マクロでOUTPUTの下にボタンを作成して、OUTPUTのデータをワークシートCUTSにコピーします。

私はINPUTに新しいデータを入力し、OUTPUTを更新します。

これで、以前のデータを上書きしたり削除したりすることなく、この新しいデータをCUTSにコピーします。

このプロジェクトは5つのセクションに分かれているので、ワークシートのCUTSに5つのテーブルを作成して印刷してください。

INPUTテーブルにはセルA1:M31が含まれていますが、これは問題ではありません(これはコピーしません)。

OUTPUTテーブルは、セルO6:S26を占有します。これはコピーする必要があるデータです。

ワークシートへの配置CUTSはセルA1から開始することができます(つまり、表の範囲はA1:E20です)。私は列をスキップして、次のデータセットを配置したいと思います。したがって、次のデータセットはG1(G1:K20)からM1:Q20などで始まる必要があります。たぶん、3つのテーブルを横切って、次の3つのテーブルを(行単位で)開始してください。

ここでは、使用しようとしているコードです。問題は、値を保持せず、以前のデータを上書きすることです。

Sub Create_CUTS() 

Dim sourceSheet As Worksheet 
Dim sourceRange As Range 
Dim sourceRows As Integer 

Set sourceSheet = Worksheets("CALCULATOR") 
sourceRows = WorksheetFunction.CountA(sourceSheet.Range("A:A")) 
Set sourceRange = sourceSheet.Range("O6:S26" & sourceRows) 

Dim targetSheet As Worksheet 
Dim targetRange As Range 
Dim targetRows As Integer 

Set targetSheet = Worksheets("CUTS") 
targetRows = WorksheetFunction.CountA(targetSheet.Range("A:A")) 
Set targetRange = targetSheet.Range("A" & targetRows + 1 & ":A" & targetRows + 1 + sourceRows) 
sourceRange.Copy Destination:=targetRange 

End Sub 

これを行うには、いくつかの方法がありますが、 -Grumps

答えて

0

みんな、ありがとうございました。最も簡単なのは、おそらく、ターゲットシートの使用範囲を参照して、最後のペーストをどこで中止したかを知ることです。

lastUsedRow = targetSheet.UsedRange.Rows.Count 
lastColumnUsed = targetSheet.UsedRange.Columns.Count 

次に、列または行を追加して、新しい場所にテーブルを貼り付けます。列数が22以上の場合は、行を追加して「A」と「lastUsedRow + 2」に貼り付けます。シートが空のセルで保存されていても、「使用済み」として読み取られる場合は、何らかの理由で間違っている可能性があります(何らかの理由で私が作業している人が、これを常に管理しています。それを行う)。これはユーザーが操作しない何かのように聞こえるので、問題はないと思いますが、それが問題の可能性がある場合は、ループを使用して次の空のセルを見つけることができます組み込みの "usedrange"コレクション。

関連する問題