01-VBA

ダイアログボックス|Excel VBA (Part.3)【InputBox+AutoFilter】編 | 現役エンジニア&プログラミングスクール講師

目標

InputBoxについて理解して利用できる。
InputBoxの書き方(文法)について理解する。
AutoFilterメソッドを理解し利用できる。

InputBoxの概要と利用方法

InputBoxとは

ユーザーが値を入力するためのダイアログボックスのことです。InputBoxから入力された値はプログラムの中で利用することができます。

InputBoxの構文とプロシージャ

InputBoxの構文

まずは基本の形を確認します。構文は以下のとおりです。

構文Sub MinputBoxExpression1()
Dim Name As String
Name = InputBox(“第1引数“)
Name = InputBox(“第1引数“,”第2引数“)
Name = InputBox(“第1引数“,”第2引数“, “第3引数“)

‘0を入力しないと反映されない
Name = InputBox(“第1引数“,”第2引数“, “第3引数“, 第4引数, 第5引数)
‘例
Name = InputBox(“第1引数”,”第2引数”, “第3引数”, 第4引数, 0)

‘0を入力しないと反映されない
Name = InputBox(“第1引数”,”第2引数”, “第3引数”, 第4引数, 第5引数)
‘例
Name = InputBox(“第1引数”,”第2引数”, “第3引数”, 0 , 第5引数)

Name = InputBox(“第1引数”,”第2引数”, “第3引数”, 第4引数, 第5引数)

End Sub

第4引数と第5引数はインプットボックスの表示位置の指定に利用します。第4引数が横の位置、第5引数が縦の位置を設定します。単位はtwipで第4引数はX軸のポジションからxposと呼ばれ、第5引数Y軸のポジションでyposと呼ばれます。567twipでおよそ1cmとなっています。(下キャプチャ参照)

第4引数と第5引数は何れかを省略した形で扱うことはできません。構文の中で「0」としているのはその為です。

ちょっと、ごちゃごちゃとしますが、それぞれの引数は下キャプチャの通りとなります。

サンプルプロシージャ1

サンプルプロシージャ1については実行結果は載せていません。コピペして実行を確認してみてください。

Sub inputBoxExpression1()
Dim Name As String

Name = InputBox("お名前を入力してください", "Titleを入力")

Name = InputBox("お名前を入力してください", "Titleを入力", "山田太郎")

Name = InputBox("お名前を入力してください", "Titleを入力", "山田太郎", 1000, 0) '0を入力しないと反映されない

Name = InputBox("お名前を入力してください", "Titleを入力", "山田太郎", 0, 1000) '0を入力しないと反映されない

Name = InputBox("お名前を入力してください", "Titleを入力", "山田太郎", 1000, 1000)

End Sub

AutoFilterメソッド

AutoFilterメソッドの文法

構文抽出条件の文字列を1つ使用する場合
セレクション(Excelの表).AutoFilter 表の列番号, 抽出条件の文字列, フィルター設定

抽出条件の文字列を2つ使用する場合
Selection.AutoFilter 表の列番号, 文字列1, フィルター設定, 文字列2

ドロップダウンメニューの表示と非表示を「True/False」で設定
Selection.AutoFilter 表の列番号, 文字列1, フィルター設定, 文字列2, True/False

Selectionとしなくても一覧表のいずれかのセルが選択されていればAutoFilterを
利用できます。
例:Range(“C8”).AutoFilter 2, FilterProp, , , False

引数部分に丸カッコ ( )は利用しません。
AutoFilter (表の列番号, 文字列1, フィルター設定, 文字列2, True/False)
引数(名前付き引数)を明示する場合は := を利用します。
Field:=2, Criteria1:=”文字列”, Operator:=xlBottom10Items

※メソッドに準備された名前の付いた引数のことを名前付き引数といいます。名前がついていると引数の数に関係なく、名前付き引数を利用して値を設定することができます。

AutoFilterメソッドの引数(プロパティ)

構文オブジェクト.AutoFilter 表の列番号, 文字列1, フィルター設定, 文字列2, True/False

これらの引数にはプロパティ名があります。それぞれ以下の名前となります。

オブジェクト.AutoFilter Field, Criteria1, Operator, Criteria2, VisibleDropDown
引数を明示する場合は上記のプロパティ名に続けて組み込み定数を設定します。
設定する場合は「:=」を利用して繋ぎます。例:field:=3

名前付き引数を明示した場合は省略した引数が中間にあっても「,,」で引数の位置を補う必要はありません。

例:
Range(“C8”).AutoFilter 2, FilterProp, , , False
例:
Range(“C8”).AutoFilter Field:=2, Criteria1:=FilterProp VisibleDropDwon:=False

Operatorプロパティの組み込み定数

組み込み定数意味
xlAndCriteria1Criteria2をAND条件フィルタリング
xlOrCriteria1Criteria2をOR条件フィルタリング
xlTop10ItemsCriteria1で指定した条件での上位10項目
xlBottom10ItemsCriteria1で指定した条件での下位10項目
xlTop10PercentCriteria1で指定した条件での上位10%
xlBottom10PercentCriteria1で指定した条件での下位10%
xlFilterValuesCriteria1で指定した値、配列も利用可能
xlFilterCellColorセルの色
xlFilterFontColorフォントの色
xlFilterIconアイコン
xlFilterDynamic動的フィルター

サンプルプロシージャ2

サンプルプロシージャ2ではAutoFilterを利用しています。VBAからデータの抽出を行えます。AutoFilterを解除する時は「Selection.AutoFilter」とします。

Sub UsingAutoFilter1()

Dim FilterProp As String
Dim RemoveFilter As Integer

Sheets("Sheet4").Select
Range("C4").Select

FilterProp = InputBox("検索する科目を入力して下さい", "科目入力", , 10000, 10000)
Selection.AutoFilter 2, FilterProp

RemoveFilter = MsgBox("フィルターを解除しますか?", vbOKCancel, "フィルターの解除")
    If RemoveFilter = vbOK Then
        Selection.AutoFilter
        MsgBox "解除しました。"
    Else
    End If

End Sub

今回利用するシートは次の通りです。

実行結果

サンプルプロシージャ3

その他のAutoFilterの利用方法

Sub UsingAutoFilter2()

Dim RemoveFilter As Integer

Sheets("Sheet4").Select
Range("C4").Select

Selection.AutoFilter Field:=4, Criteria1:=">1000", Operator:=xlAnd, Criteria2:="<100000"

    RemoveFilter = MsgBox("フィルターを解除しますか?", vbOKCancel, "フィルターの解除")
    If RemoveFilter = vbOK Then
        Selection.AutoFilter
    End If
    
Selection.AutoFilter Field:=2, Criteria1:="現金売上", Operator:=xlOr, Criteria2:="カード売上"

    RemoveFilter = MsgBox("フィルターを解除しますか?", vbOKCancel, "フィルターの解除")
    If RemoveFilter = vbOK Then
        Selection.AutoFilter
    End If
    
Selection.AutoFilter Field:=4, Operator:=xlTop10Items

    RemoveFilter = MsgBox("フィルターを解除しますか?", vbOKCancel, "フィルターの解除")
    If RemoveFilter = vbOK Then
        Selection.AutoFilter
    End If
    
Selection.AutoFilter Field:=4, Operator:=xlBottom10Items

    RemoveFilter = MsgBox("フィルターを解除しますか?", vbOKCancel, "フィルターの解除")
    If RemoveFilter = vbOK Then
        Selection.AutoFilter
    End If
    
Selection.AutoFilter Field:=2, Criteria1:=Array("仕入れ", "光熱費", "地代家賃"), Operator:=xlFilterValues

    RemoveFilter = MsgBox("フィルターを解除しますか?", vbOKCancel, "フィルターの解除")
    If RemoveFilter = vbOK Then
        Selection.AutoFilter
    End If
    
Selection.AutoFilter Field:=2, Criteria1:=RGB(255, 0, 0), Operator:=xlFilterCellColor
    RemoveFilter = MsgBox("フィルターを解除しますか?", vbOKCancel, "フィルターの解除")
    If RemoveFilter = vbOK Then
        Selection.AutoFilter
    End If

End Sub

実行結果は割愛します。

今回は以上となります。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

クラスの利用方法|Excel VBA (Part.2) | 現役エンジニア&プログラミングスクール講師

2023年2月18日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の ユーザーフォーム編(Part.1~Part.17)システム作成 | 現役エンジニア&プログラミングスクール講師

2024年1月19日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

制御構文|Excel VBA (Part.7)【For Next】ネスト編(後編)重複のないランダムな数の生成 | 現役エンジニア&プログラミングスクール講師

2022年11月26日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ExcelVBAのEndプロパティ(2)| 現役エンジニア&プログラミングスクール講師

2022年8月24日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

制御構文|Excel VBA (Part.1) 概要編 | 現役エンジニア&プログラミングスクール講師

2022年11月8日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の「デバッグ」(Part.1)「自動構文チェック機能」「VBAProjectのコンパイル」「プロシージャ実行時エラー」| 現役エンジニア&プログラミングスクール講師

2022年12月14日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site