エクセルVBAマクロを自動作成する無料アプリです。
例として「セルのダブルクリックで、そのセルに色を付け、値をリストに書き出す」VBAマクロを作成します。
事例 A列の商品をダブルクリックで、セルを黄色にし、D列に商品名と単価を転記する
できました(^^)/
仕組み
❶ セルに色を付ける処理と、❷ セルの値を、Resizeしてコピーする処理を、
❸ 連続で実行します。
❹ さらに、セルのダブルクリックで、❸を自動実行します。
アプリの設定
❶セルに色を付ける処理
アプリへのリンク ⇒文字の色・セルの色
【ポイント】
■ 「処理の範囲を設定」は、範囲オプションで、「選択範囲」を選びます。
この「選択範囲」とは、画面上のカーソルがあるセルです。
❷セル範囲をResizeして、コピーする処理
アプリへのリンク ⇒コピー・切り取り
【ポイント】
■ 「処理の範囲を設定」は、範囲オプションで、「選択範囲」を選びます。
■ ◆セル範囲の変更Resizeで、「,2]を入力し、範囲を2列に広げます。
■ 貼り付け先のセルは、「上のセルの最終行の下」を選びます。
❸連続実行するマクロを作る
アプリへのリンク ⇒連続実行するマクロを作る
❹ダブルクリックで実行
アプリへのリンク ⇒ダブルクリックで、マクロを自動実行する
【ポイント】
■ 「セル範囲」は、ダブルクリックでプログラムを実行する、セルの範囲を指定します。(この範囲以外をダブルクリックしても、マクロは実行されません)
■ マクロ名は、作成済みのマクロ名を入力します。
■ 作成したマクロは、ダブルクリックするシート名の、VBE画面に貼り付けます。
表示されるVBAコード
アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。
VBAコードを見る
❶
Sub デモ_1() '色変更
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
セル範囲 = Selection.Address(False, False)
Range(セル範囲).Select
Call デモ_1_メイン処理(セル範囲, セル)
Application.DisplayAlerts = True ' 警告表示を再開
Application.ScreenUpdating = True ' 画面描画を再開
End Sub
Sub デモ_1_メイン処理(セル範囲 As String, セル As Range)
Selection.Offset(0, 0).Interior.Color = RGB(255, 255, 0)
End Sub
❷
Sub デモ_2() 'コピー・切り取り
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
セル範囲 = Selection.Address(False, False)Range(セル範囲).Select
Call デモ_2_メイン処理(セル範囲)
Application.DisplayAlerts = True ' 警告表示を再開
Application.ScreenUpdating = True ' 画面描画を再開
End Sub
Sub デモ_2_メイン処理(セル範囲 As String)
Selection.Offset(0, 0).Resize(, 2).CopySheets("sheet1").Select
Range("d1").Select
Dim 左端列 As Long, 下端行 As Long, 相手セル As String, 回 As Long
For 回 = 1 To 1
左端列 = ActiveCell.Column
下端行 = Selection.CurrentRegion.Row + Selection.CurrentRegion.Rows.Count - 1
相手セル = Cells(下端行, 左端列).Address(RowAbsolute:=False, ColumnAbsolute:=False)
If Range(相手セル).Value <> "" Then
相手セル = Cells(下端行 + 1, 左端列).Address(RowAbsolute:=False, ColumnAbsolute:=False)
End If
Range(相手セル).Select
Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=False
Next 回Application.CutCopyMode = False
End Sub
❸
Sub デモ_連続トリガー()
Call デモ_1
Call デモ_2
End Sub
❹
'【重要】作成したコードは、標準モジュールではなく、対象のシートのシートモジュールに貼り付けます
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("a2:a8")) Is Nothing Then
Exit Sub
Cancel = True
Else
Call デモ_連続トリガー
End If
End Sub
ChatGPTで修正
あなたが自動化したい内容と事例が少し異なる場合は、無料で使えるマイクロソフトの「BingAIチャット」でコードを修正します。とても簡単です!