1

私はこれに少し困惑していて、誰かが助けてくれるかどうか疑問に思いましたか? あるワークシートから別のワークシートにデータをコピーするマクロを Excel で作成しました。正常に動作しますが、明らかにマクロを実行するたびに、一番上の行が完成するだけです (記録中に貼り付けたように)。マクロを実行するたびにデータが新しい行にコピーされるように、実際に機能させたいと思っています。

お役に立てれば、ドキュメントへのリンクを貼り付けます。VBAコードをマクロに貼り付けただけの場合だと思います。現時点では、コードは次のようになります。

Sub Macro1()
'
' Macro1 Macro
'

'
    Sheets("Quotation System").Select
    Range("K9").Select
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    Range("A2").Select
    ActiveSheet.Paste
    Range("B2").Select
    Sheets("Quotation System").Select
    Range("K11").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    ActiveSheet.Paste
    Sheets("Quotation System").Select
    Range("K13").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    Range("C2").Select
    ActiveSheet.Paste
    Sheets("Quotation System").Select
    Range("K15").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    Range("D2").Select
    ActiveSheet.Paste
    Columns("D:D").EntireColumn.AutoFit
    Columns("D:D").EntireColumn.AutoFit
    Columns("D:D").ColumnWidth = 10.86
    Sheets("Quotation System").Select
    Range("K17").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    Range("E2").Select
    ActiveSheet.Paste
    Range("F2").Select
    Sheets("Quotation System").Select
    Range("K19").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    ActiveSheet.Paste
    Columns("F:F").ColumnWidth = 8.57
    Sheets("Quotation System").Select
    Range("K21").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    Range("G2").Select
    ActiveSheet.Paste
    Range("H2").Select
    Sheets("Quotation System").Select
    Range("K23").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    ActiveSheet.Paste
    Range("I2").Select
    Sheets("Quotation System").Select
    Range("K25").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    ActiveSheet.Paste
    Sheets("Quotation System").Select
    Range("K7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    Range("J2").Select
    ActiveSheet.Paste
    Range("K2").Select
    Sheets("Quotation System").Select
    Range("G29").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Confirmed Bookings").Select
    ActiveSheet.Paste
    Columns("K:K").EntireColumn.AutoFit
    Columns("K:K").ColumnWidth = 6
    Columns("K:K").ColumnWidth = 7
    Range("K2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "='Quotation System'!R[27]C[-4]"
    Range("K3").Select
    Columns("J:J").EntireColumn.AutoFit
    Range("I19").Select
    Columns("A:A").ColumnWidth = 8.43
End Sub
Sub Booking_confimred()

End Sub

どうもありがとう!

4

1 に答える 1

3

非常に状況に特化したマクロが記録されているため、このマクロを改善し、それらのコピーを特定の位置に配置するための基本的な方法を紹介したいと思います。

これで始めます

Public Sub Macro1()

  Application.CutCopyMode = False

次に、これは macro-recoder がコピーに使用するものです。

Sheets("Quotation System").Select
Range("K9").Select
Selection.Copy

これは代わりに使用できるものです:

Sheets("Quotation System").Range("K9").Copy

これは、マクロレコーダーが貼り付けに使用するものです。

Sheets("Confirmed Bookings").Select
Range("A2").Select
ActiveSheet.Paste

これは代わりに使用できるものです:

Sheets("Confirmed Bookings").Range("A2").Paste

そして、それを新しい行に貼り付けるには、次のようになります

   With Sheets("Confirmed Bookings")
     .Cells(.UsedRange.Columns(1).Rows.Count + 1, 1).Paste
   End With

ただし、これがこれを解決する唯一の方法ではなく、確かに最善の方法ではありませんが、VBA を理解しているレベルでは役立つかもしれません。

よりきちんとした解決策が必要な場合は、SO で検索することをお勧めします。ここには、同様の質問/問題とそれらに対する適切な解決策がたくさんあるためです。

于 2012-11-19T14:57:41.000 に答える