Microsoft ExcelでVBAを使用して、データベースシートにActiveCellの行からセルをコピー
Microsoft Excelでは、アクティブセル行から特定のシートにセルをコピーできます。この記事では、VBAコードを使用して、すべてのシートからデータを転送し、データを1つのワークシートにマージします。ブックにマスターシートを追加し、指定した範囲のデータを1つのシートに保存します。
_サンプルコードは、Sheet2という名前のデータベースシートにコピーされます。
マクロを実行するたびに、セルはsheet2の最後の列の後のデータとともに最後の行の下に配置されます。このマクロは、ActiveCellから列A、Dのセルをコピーします。_
以下はサンプルデータの画像です:
アクティブセル行からSheet2にセルをコピーするには; VBエディターを起動するには、以下の手順に従う必要があります。
[開発者]タブをクリックし、[コード]グループから[VisualBasic]を選択します
===
-
[挿入]をクリックしてから[モジュール]をクリックします
これにより、新しいモジュールが作成されます。標準モジュールに次のコードを入力します
Sub CopyCells() Dim sourceRange As Range Dim destrange As Range Dim Lr As Long Lr = LastRow(Sheets("Sheet2")) + 1 Set sourceRange = Sheets("Sheet1").Cells( _ ActiveCell.Row, 1).Range("A1:D1") Set destrange = Sheets("Sheet2").Range("A" & Lr) sourceRange.Copy destrange End Sub
Sub CopyCellsValues() Dim sourceRange As Range Dim destrange As Range Dim Lr As Long Lr = LastRow(Sheets("Sheet2")) + 1 Set sourceRange = Sheets("Sheet1").Cells( _ ActiveCell.Row, 1).Range("A1:D1") With sourceRange Set destrange = Sheets("Sheet2").Range("A" _ & Lr).Resize(.Rows.Count, .Columns.Count) End With destrange.Value = sourceRange.Value End Sub
Function LastRow(sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function
Function Lastcol(sh As Worksheet) On Error Resume Next Lastcol = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column On Error GoTo 0 End Function
===
上記のVBAコードを確認するには; 「A1:D1」の範囲のデータを追加し、F5ショートカットキーを押してマクロを実行します。指定した範囲に保存されているデータは、A1から「Sheet2」にコピーされます
-
このマクロを再度実行すると;データは次の行に保存されます。下の画像を参照してください:
上記のマクロの範囲は、要件に合わせて変更できます。結論:*上記のマクロを使用すると、VBAコードを使用してアクティブセル行から新しいシートにセルをコピーできます。
私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。
_私たちはあなたからの連絡をお待ちしております。私たちの仕事を改善、補完、または革新し、あなたのためにそれをより良くする方法を教えてください。 [email protected]_までご連絡ください