MENU

入力規則のリスト(最新・重複/空白なし)を、セル選択ですぐ開く

エクセルVBAマクロを、簡単に作成してみませんか?

例として、アプリで「入力規則のリスト(最新・重複/空白なし)を、セル選択ですぐ開く」VBAマクロを作成します。慣れると1分でマクロが完成します。

処理のイメージ

事例

出荷明細の出荷先欄から、重複の無い請求先リストを作り、請求先名のドロップダウンリストを作ります。

請求書に、請求先名のドロップダウンリストができました。

できました(^^)/

活用例

・ ドロップダウンリストは、▼印を押さずに、セルを選択するだけで開きます。

・ 新しいデータが反映された、最新のリストが表示されます。

アプリの設定

アプリの設定です。

トップページ ⇒▼入力規則、メッセージ、自動実行

 ⇒入力規則のリスト(最新・重複/空白なし)を、セル選択で開く

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

【重要】最下段のコードは、標準モジュールではなく、対象のシートのシートモジュールに貼り付けます

Sub デモ_17() '入力規則のリスト(最新・重複/空白なし)を、セル選択で開く
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("出荷明細").Select
'◆最終行を取得し、セル範囲を決める
Range("a2:a2").CurrentRegion.Select
右下セル = Cells(Selection.Row + Selection.Rows.Count - 1, Range("a2").Column).Address(False, False)
セル範囲 = "a2" & ":" & 右下セル 
Call デモ_17_メイン処理(右下セル)
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
                           
Sub デモ_17_メイン処理(右下セル As String)
Application.Calculation = xlCalculationManual '自動計算を停止
'辞書に見出し語を登録
Dim 辞書 As Object, 行 As Long
Set 辞書 = CreateObject("Scripting.Dictionary")
For 行 = Range("a2").Row To Range(右下セル).Row
    If Not 辞書.Exists(Cells(行, Range("a2").Column).Value) Then
        辞書.Add Cells(行, Range("a2").Column).Value, "1"
    End If
Next 行
'見出し語を、リストに入れる
Dim リスト As Variant
 リスト = 辞書.keys
'リストを、入力規則にいれる
With Worksheets("請求書").Range("b4").Validation
    .Delete
    .Add Type:=xlValidateList, _
         Formula1:=Join(リスト, ",")
End With
Set 辞書 = Nothing
Worksheets("請求書").Activate
Application.Calculation = xlCalculationAutomatic ' 自動計算を再開
End Sub

'【重要】下のコードは、標準モジュールではなく、対象のシートのシートモジュールに貼り付けます
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Sheets("請求書").Range("b4")) Is Nothing Then Exit Sub
Call デモ_17
SendKeys "%{DOWN}"
End Sub

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

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

 

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