目標
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 |
ちょっと、ごちゃごちゃとしますが、それぞれの引数は下キャプチャの通りとなります。
サンプルプロシージャ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メソッドの引数(プロパティ)
構文 | オブジェクト.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プロパティの組み込み定数
組み込み定数 | 意味 |
xlAnd | Criteria1と Criteria2をAND条件フィルタリング |
xlOr | Criteria1とCriteria2をOR条件フィルタリング |
xlTop10Items | Criteria1で指定した条件での上位10項目 |
xlBottom10Items | Criteria1で指定した条件での下位10項目 |
xlTop10Percent | Criteria1で指定した条件での上位10% |
xlBottom10Percent | Criteria1で指定した条件での下位10% |
xlFilterValues | Criteria1で指定した値、配列も利用可能 |
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ソフト・ウィルス対策ソフトについて書いています。...