VBA 過去の値をコピー

Bilal Shahid 2023年6月21日
  1. Excel のマクロ
  2. Microsoft Excel でのマクロの動作
  3. VBA コピー ペースト値のデモ
VBA 過去の値をコピー

このチュートリアルでは、VBA を使用して Excel の同じシートまたは別のシート内で、ある列の値を別の列にコピーする方法を説明します。

Excel のマクロ

VBA で記述されたマクロを使用して、Excel の反復作業をより簡単に実行できるようになりました。 特定のジョブを実行するマクロを記述でき、ユーザーは必要なときにマクロを実行できます。

複雑なことを何度も何度も行うことが容易になります。 マクロは一度コーディングする必要があり、無限に使用できます。 使いやすさを向上させるような方法でマクロを作成する必要があることを忘れないでください。

マクロに値をハードコーディングしないようにしてください。 ユーザーからの入力を取得して使いやすさを向上させるのに理想的です。

Excel で値をある列から別の列にコピーできる VBA ステートメントを探している場合は、マクロの定義と使用法に注意する必要があります。

Microsoft Excel のマクロは、目的のタスクを繰り返し自動化する優れた機能です。 つまり、マクロは、ユーザーが頻繁に実行するために記録するアクションまたは一連のアクティビティです。

Microsoft Excel でのマクロの動作

Microsoft Excel では、2つの方法でマクロを記述できます。 どちらの方法も、ユーザーの実現可能性を確保するように設計されています。 Microsoft Excel でマクロを操作するには、次の 2つの方法があります。

アプローチ 1: マクロを記録する

マクロを使用してタスクを繰り返し実行する最も簡単な方法は、マクロを作成して記録することです。 マウスのクリックとキーストロークだけで、これらすべてを実行できます。

マクロを記録する手順は非常に簡単です。 以下の指示に従ってください。

  1. Microsoft Excel で View タブを開きます。 マクロ のオプションを表示する必要があります。 マクロオプションをクリックすると、すでに記録されているさまざまなマクロを表示するオプションが提供されます。 さらに、新しいマクロも記録できるようにする必要があります。
  2. マクロの記録オプションをクリックすると、ウィンドウが表示されます。
  3. マクロに名前を付けて説明します。 特定のマクロのショートカットを作成できます。 たとえば、ショートカットを Ctrl + w として設定すると、このショートカットが呼び出されるたびにマクロが自動的に実行されます。 もちろん、これはオプションですが、良い習慣としてお勧めします。
  4. 特定のマクロ内で繰り返したいすべてのキーストロークとマウス クリックを記録し、作業が終了したらすぐにマクロの記録を停止します。
  5. View タブからマクロを実行するか、以前に定義したショートカットを使用すると、マクロに記録された同じタスクが実行されます。

絶対参照または相対参照を使用してマクロを記録する

デフォルトでは、マクロは絶対アドレスで記録されます。 したがって、値を columnA から columnC にコピーすると、記録されたマクロは常に同じタスクを実行します。

相対参照を使用してマクロを記録すると、選択したセルに対して相対的に動作します。たとえば、マクロは 列 A から 列 C に値をコピーすることを記録します。

列 W を選択してマクロを実行すると、列 W から値がコピーされ、列 Y に貼り付けられます。 ここでも、必要に応じて絶対アドレス指定または相対アドレス指定を使用することを忘れないでください。

アプローチ 2: マクロを作成する

ユーザーからの入力が必要なタスクや、ユーザーに出力を提供するタスクなど、特定のタスクを実行する場合は、これらのマクロを書き留める必要があります。

マクロを記録しても、特定のタスクを実行して一般化することはできません。 したがって、Microsoft Excel で VBA を使用して、ニーズに合わせたマクロを作成できます。

マクロを作成する手順は非常に簡単です。 次の手順では、マクロを記述する手順を定義します。

  1. Microsoft Excel の開発者タブでマクロボタンを選択します。

  2. このオプションにより、すべての VBA サブルーチンまたはマクロにアクセスできる [マクロ] ダイアログ ボックスが開きます。

  3. Visual Basic ボタンをクリックして、Visual Basic Editor を開きます。

  4. このエディタ内で、マクロのコードを記述、編集、テスト、および実行できます。 マクロの作成中に絶対アドレスと相対アドレスを選択するオプションがないことに注意してください。

    VBA コードが特定の値でハードコードされている場合、絶対参照に従って実行されます。 VBA コードが一般的に記述されている場合、相対参照に従って実行されます。

VBA コピー ペースト値のデモ

ある列から値をコピーして、同じシートまたは別のシートに存在する別の列に貼り付けたい場合は、シンプルで簡単な VBA コードを使用するとうまくいきます。

この記事では、絶対参照と相対参照を使用して、ある列から別の列に値をコピーして貼り付けるタスクを実行するサブルーチンを共有しています。

ユーザー自身がメイン関数を作成し、この記事で言及されているサブルーチンを組み込んで、値をコピーして貼り付けるタスクを実行できます。

以下に 3つの解決策を示します。

解決策 1: Sheet1Column1 から Sheet2Column2 に値をコピーする

コード例:

Public Sub CopyPasteValues() 
    Sheets("Sheet1").Columns(1).Copy
    Sheets("Sheet2").Columns(2).PasteSpecial xlPasteValues
End Sub

上記のコードは、Sheet1 から Column1 を選択してコピーするサブルーチン CopyPasteValues() を作成します。 次に、Sheet2 から Column2 を選択し、コピーした値を貼り付けます。 xlPasteValues 属性は、セルの値をコピーするためにのみ使用されます。

解決策 2: Sheet1ColumnA から Sheet2ColumnB に値をコピーする

コード例:

Public Sub CopyPasteValues()
    Sheets("Sheet1").Columns(A).Copy
    Sheets("Sheet2").Columns(B).PasteSpecial xlPasteValues 
End Sub

上記のコードは、最初のソリューションで説明したコードに似ています。 Excel でシート内の列にアクセスするために使用できる複数のオプションのアイデアをユーザーに提供することは、最初のソリューションに代わるものです。

解決策 3: 特定の範囲内の値をコピーするための相対参照を含むサブルーチン

3 番目のソリューションは、ある特定の範囲から別の範囲に値をコピーするための相対参照を持つサブルーチンを共有します。

コード例:

Public Sub CopyPasteValues() 
    Dim arr1, arr2, i As Integer 
    arr1 = Array("AC", "AD") 
    arr2 = Array("A", "B") 

    For i = LBound(arr1) To UBound(arr1)
        Sheets("Sheet1").Columns(arr1(i)).Copy
        Sheets("Sheet2").Columns(arr2(i)).PasteSpecial xlPasteValues 
    Next

    Application.CutCopyMode = False
End Sub

上記のコードは、for ループで相対アドレスを使用するサブルーチン CopyPasteValues() を作成します。 したがって、変数が使用されます。

  • arr1 は、コピーする必要がある Sheet1 の特定の範囲です。
  • arr2 は、値を貼り付ける Sheet2 の特定の範囲です。
  • i 変数は、for ループのカウンターです。

for ループは Sheet1 の列 AC の値を Sheet2 の列 A にコピーし、実行を続けます。 for ループの最後に、Application.CutCopyMode = False が書き込まれ、他のシートにコピーするために選択されている値の特定の範囲を選択解除します。

そのため、VBA を使用すると、ユーザーは Microsoft Excel にマクロを記述して、頻繁に行うタスクをすばやく実行できることがわかりました。 マクロを記録するだけでなく、書き込むこともできます。 また、マクロが Microsoft Excel で無制限の機能を提供できるようにします。

著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

関連記事 - VBA Excel