MENU

セルのダブルクリックで、そのセルに色を付け、値をリストに書き出す

エクセル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).Copy

Sheets("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秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓