Excelマクロでユーザーが選択したセルを指定シートの空白セルに自動で貼り付ける方法

Visual Basic

Excelでマクロを使用して、ユーザーが選択したセルの値を指定のシートに自動的に貼り付ける方法を解説します。この記事では、インプットボックスを使ってユーザーにセルを選ばせ、その選択された値を指定したシートの空白セルに貼り付けるマクロの作成方法について説明します。

目的とマクロの基本的な流れ

このマクロの目的は、ユーザーにインプットボックスを使ってセルを選ばせ、選択されたセルの値を指定したシートの空白セルに貼り付けることです。具体的には、以下の流れを実現します。

  • ユーザーが選択したセルの値をコピー
  • Book1のSheet1にあるB3セルから下方向に文字が入力されているセルの次の空白セルに貼り付け
  • 次に、再度インプットボックスでユーザーにセルを選ばせ、その値をC列の次の空白セルに貼り付け

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列の空白セルに貼り付けています。

コードの解説

以下に、コードの詳細な解説を行います。

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

エラー処理と改善点

上記のコードでは、エラー処理を簡単に実装していますが、いくつかの改善が可能です。

  • 選択されたセルが空白の場合のエラー処理を追加する
  • 選択されるセルが適切な範囲内であるかを確認する
  • 入力したセルが他のシートに影響を与えないようにする

これらの改善を加えることで、より堅牢でユーザーに優しいマクロを作成することができます。

まとめ

この記事では、Excel VBAを使ってインプットボックスでユーザーに選ばせたセルの値を指定したシートの空白セルに自動で貼り付ける方法について解説しました。このようなマクロを使用することで、手動での作業を大幅に自動化でき、作業効率が向上します。

今後、このマクロをさらに拡張し、他のシートや条件に合わせたカスタマイズを行うことで、より高度な自動化を実現することができます。

コメント

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