Excelマクロでセルの値をユーザー選択でコピーして貼り付ける方法

Visual Basic

Excelでマクロを使って、ユーザーが選択したセルの値を指定したシートの次の空白セルに貼り付ける方法を学びましょう。この記事では、インプットボックスを使ってセルを選択し、そのデータを別のシートの空白セルに貼り付ける手順を解説します。

目的と基本的な流れ

このマクロの目的は、インプットボックスを使ってユーザーにコピーしたいセルを選択させ、その選択されたセルの値を、指定したシートの空白セルに自動的に貼り付けることです。具体的には、次の流れで処理を行います。

  • ユーザーがコピーしたいセルをインプットボックスで選択
  • 指定されたシートの次の空白セルを見つけ、そのセルに貼り付け
  • 次に、再度セルを選択させて、別のセルに貼り付ける

Excel VBAコードの作成

この処理を実現するためのExcel VBAコードを紹介します。まずは、インプットボックスを使ってセルを選択させ、そのセルの値を指定のシートに貼り付ける方法をコードにしてみましょう。

Sub CopyToNextEmptyCell()
    Dim selectedCell As Range
    Dim sheet As Worksheet
    Dim nextEmptyRow As Long

    ' Sheet1を指定
    Set sheet = ThisWorkbook.Sheets("Sheet1")

    ' ユーザーにコピーするセルを選択させる
    On Error Resume Next
    Set selectedCell = Application.InputBox("コピーしたいセルを選択してください", Type:=8)
    On Error GoTo 0

    ' セルが選ばれていない場合は終了
    If selectedCell Is Nothing Then Exit Sub

    ' B3セルから下方向に空白セルを見つける
    nextEmptyRow = sheet.Cells(sheet.Rows.Count, 2).End(xlUp).Row + 1
    sheet.Cells(nextEmptyRow, 2).Value = selectedCell.Value

    ' C3セルから下方向に空白セルを見つける
    nextEmptyRow = sheet.Cells(sheet.Rows.Count, 3).End(xlUp).Row + 1
    sheet.Cells(nextEmptyRow, 3).Value = selectedCell.Value
End Sub

このコードでは、ユーザーにセルを選択させ、その値をSheet1のB列とC列の空白セルに貼り付ける処理を行っています。`InputBox`を使ってユーザーから選択されたセルの値を取得し、その後指定したシートの空白セルに値を貼り付けています。

コードの解説

コードの各部分について解説します。

  • Application.InputBox: ユーザーにセルを選択させるインプットボックスを表示します。`Type:=8`オプションを使うことで、セル範囲を選択させることができます。
  • sheet.Cells(sheet.Rows.Count, 2).End(xlUp).Row: 指定した列(ここではB列)で、最も下に入力されている行を見つけ、その次の空白セルを取得します。
  • Valueプロパティ: 選択されたセルの値を`Value`プロパティで取得し、その値を新しいセルに貼り付けます。

エラー処理と改善点

上記のコードでは、エラー処理を最小限にしており、もしユーザーがセルを選ばなかった場合や、何らかのエラーが発生した場合にプログラムが途中で停止しないようにしています。ただし、さらに改善することができます。例えば。

  • 選択されたセルが空白の場合の処理を追加する
  • 入力内容の確認メッセージを追加し、操作ミスを防ぐ
  • 選択されたセルのデータ型に応じて、貼り付けるデータを整形する

これらの改善を加えることで、より堅牢なマクロを作成することができます。

まとめ

このマクロでは、インプットボックスを利用してユーザーが選択したセルの値を、指定したシートの次の空白セルに自動で貼り付ける方法を紹介しました。VBAを使うことで、手動での作業を自動化し、作業効率を向上させることができます。今後、さらにカスタマイズした処理を加えることで、より便利なマクロに進化させることができます。

コメント

タイトルとURLをコピーしました