エクセルVBAマクロを、簡単に作成してみませんか?
例として、アプリで「セルのダブルクリックで、そのセルに色を付け、値をリストに書き出す」VBAマクロを作成します。慣れると、1分でマクロが完成します。
処理のイメージ
事例
A列の商品をダブルクリックすると、セルが黄色になり、D列に商品名と単価が転記されます。
できました(^^)/
仕組み
❶セルに色を付ける処理と、❷セルの値を、Resizeしてコピーする処理を、❸連続連続トリガーで実行しています。
❹⇒❸を、セルをダブルクリックするだけで実行するコードを、セルがある対象のシートに対応するVBEに貼り付けます。
アプリの設定
アプリの設定です。
❶セルに色を付ける処理
トップページ ⇒▼書式 ⇒◇文字の色・セルの色
・【2】処理の範囲を設定は、範囲オプションで、「選択範囲」を選びます。
この「選択範囲」とは、画面上でカーソルがあるセルです。
❷セル範囲をResizeして、コピーする処理
トップページ ⇒▼コピー・貼り付け ⇒◇コピー・切り取り・貼り付け
・【2】処理の範囲を設定は、範囲オプションで、「選択範囲」を選びます。
この「選択範囲」とは、画面上でカーソルがあるセルです。
・◆セル範囲の変更Resizeで、「,2]を入力し、範囲を2列にします。
・貼り付け先のセルは、「上のセルの最終行の下」を選びます。
❸連続連続トリガーで実行
下方にある連続トリガーのコードをVBE画面の下方に貼り付けます。
この連続トリガーで、上記の2つのコードが実行します。
❹ダブルクリックで実行
※ セル範囲は、ダブルクリックでプログラムを実行する、セル範囲を指定します。
※ マクロ名は、作成済みのマクロ名を入力します。
※ 作成したマクロは、ダブルクリックするシート名の、VBE画面に貼り付けます。
表示されるVBAコード
アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。
❶
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
マクロを使うメリット
手作業で数分かかる作業が、1秒で終わります。
ぜひ、アプリをご利用ください。