Excelノート 13-1 メッセージボックス・インプットボックス
タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらのお願いをご覧になってください。
1
メッセージボックスのボタンで処理を分岐するには
2
インプットボックスのデータの型を指定するには
3
インプットボックスでセルの値を変数に設定するには
4
インプットボックスに日付以外入力できないようにしたい
5
インプットボックスで取得したセルの位置をポイントで取得するには?
6
インプットボックスで指定したセルの番地を取得するには?
7
インプットボックスで、キャンセルした場合の処理
8
インプットボックス表示中にシートスクロールしたい
9
メッセージボックス、インプットボックスで表示する文章を改行するには
10 InputBoxメソッドと、InputBox関数の違いは?
11 セルの値を変更しようとしたとき、変更不可にしてメッセージを出すには?
12 インプットボックスで、日付を入力するには?
13 インプットボックスで、リストから項目を選択するには?
14 ひとつのインプットボックスで、複数のセルに入力するには?
1 | メッセージボックスのボタンで処理を分岐するには | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'メッセージボックスのOKボタンを押すとクリア処理をし、キャンセルを押すと処理を止めます。 Sub Test() If MsgBox("クリアしていいですか?",vbOKCancel + vbQuestion) = vbOK Then 'ここにクリアするときの処理を記述 Else 'ここにクリアしないときの処理を記述 End If End Sub ’結果を定数から取得して、処理を選択します。
この定数は下の「戻り値の定数」になります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
メッセージボックスの引数一覧
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | インプットボックスのデータの型を指定するには | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sub test() ' 0
も対象とした、すべての数値を入力する場合 Dim aa As Variant aa = 1 aa = Application.InputBox(Prompt:="数値を入力してください", Default:=aa, Type:=1) If (VarType(aa) = vbBoolean) Then Exit Sub MsgBox aa & " が入力されました" End Sub Sub test2()
' 1 または 2
の数値のみを入力する場合 Sub test3() 'Integer型(-32,768〜32,767)の範囲の、0以外の
整数を入力する場合 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 | インプットボックスでセルの値を変数に設定するには | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sub
test() Dim aa As Range Dim bb As Variant On Error Resume Next Set aa = Application.InputBox("値の入っている単独セルを指定して下さい", "セルの指定", Type:=8) If Err.Number <> 0 Then Exit Sub If aa.Cells.Count > 1 Then MsgBox "セルの指定が不正です", vbCritical Else bb = aa.Value MsgBox aa.Address & " の値は " & bb & " です" End If End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | インプットボックスに日付以外入力できないようにしたい | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sub
日付入力() Dim A As Date On Error GoTo ErrorCheck A = Application.InputBox("日付を入力してください。", Type:=2) If IsDate(A) = True Then '処理 Else GoTo ErrorCheck End If Exit Sub ErrorCheck: MsgBox "日付が入力されませんでした。終了します。" End Sub |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5 | インプットボックスで取得したセルの位置をポイントで取得するには? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sub
セルのポイント取得() Dim seru As Range On Error Resume Next Set seru = Application.InputBox("セルを指定して下さい", "セルの選択", Type:=8) If Err.Number <> 0 Then Exit Sub On Error GoTo 0 MsgBox "左は " & seru.Left & " です" & vbCrLf & _ "上は " & seru.Top & " です", Title:="セルのポイント" Set seru = Nothing End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 | インプットボックスで指定したセルの番地を取得するには? http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200101/01010110.txt 「複数のシートのセル範囲を取得するコントロールはないでしょうか?」 【VBAラウンジ】 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sub
test() Dim MyRange As Range Dim strAddr As String On Error Resume Next Set MyRange = Application.InputBox("セル範囲を指定", Type:=8) If Err.Number <> 0 Then Exit Sub On Error GoTo 0 strAddr = MyRange.Address MsgBox strAddr Set MyRange = Nothing End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7 | インプットボックスで、キャンセルした場合の処理 http://www.keep-on.com/~excelyou/2000lng4/200012/00120394.txt 「InputBoxで入力するデータの型を決めたい」 【VBAラウンジ】 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
このように入力対象が数値の場合に、受け取り項目も「数値(Integerなど)」にしてしまうと、 Dim aa As integer aa = Application.InputBox(‥‥‥ ,Type:=1) キャンセル時の結果(False)が受け取り項目にゼロとして返されます(Falseの実体は数値のゼロ)。 したがって、ゼロも入力値として扱う場合はキャンセルとの区別が付かなくなります。 そこで、受け取り項目をVariantで定義してキャンセル時の返却値である論理値[False]を 論理値のままで受け取ります。 Sub test() Dim data As Variant data = Application.InputBox("数字を入力", Type:=1) If (VarType(data) = vbBoolean) Then MsgBox "キャンセルされました" Exit Sub Else MsgBox data & " が入力されました" End If End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8 | インプットボックス表示中にシートスクロールしたい http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200104/01040053.txt 「Inputbox表示中にシートスクロールしたい」 【VBAラウンジ】 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InputBox関数では無く、InputBoxメソッドを使用します Sub Test() Dim strTmp As String strTmp = Application.InputBox(Prompt:="スクロールできます。", Type:=2) 'strTmp = InputBox(Prompt:="スクロール出来ません。") End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9 | メッセージボックス、インプットボックスで表示する文章を改行するには | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Chr 関数を使います。 Sub miko_test() MsgBox "タブ(スペース)を入れる時には" & Chr(9) & "Chr(9) を入れます" MsgBox "改行する時には" & Chr(10) & " Chr(10) または" & Chr(13) & _ " Chr(13) または" & vbCrLf & " vbCrLf を入れます" End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | InputBoxメソッドと、InputBox関数の違いは? http://www.keep-on.com/~excelyou/2000lng4/200010/00100403.txt 「InputBoxメソッド使用時に左右キーをセルの移動に使わせないようにしたい」【VBAラウンジ】 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
【関数】 InputBox(…………) 戻り値は、文字列型になります。 InputBox表示中に矢印キーを使用すると、デフォルト値を編集できます 【メソッド】 Application.InputBox(…………) 戻り値の型を指定できます。 参考:「インプットボックスのデータの型を指定するには」 InputBox表示中に矢印キーを使用すると、セルを移動します。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11 | セルの値を変更しようとしたとき、変更不可にしてメッセージを出すには? http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200107/01070100.txt 「変更を加えるとエラー表示が出るようにするには?」 【編集ラウンジ】 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A列のみ対称にしています。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then '該当するセルが1列目(A列)の場合 MsgBox "A列のセルの値は、変更・削除できません" Application.EnableEvents = False Application.Undo Application.EnableEvents = True End If End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12 | インプットボックスで、日付を入力するには? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sub miko_test() Dim h As Date h = Application.InputBox(Prompt:="入力してください", Default:=Format(Date, "m/d")) MsgBox "今日は " & h & " です" End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 | インプットボックスで、リストから項目を選択するには? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sub test() Dim 項目 As String, 選択 As Variant 項目 = "1)項目1" & Chr(10) & "2)項目2" & Chr(10) & _ "3) 項目3" & Chr(10) & "4)項目4" & Chr(10) & "5)項目5" 選択 = InputBox(prompt:="どれにしますか?" & Chr(10) & 項目, Title:="項目選択", Default:=1) If (VarType(選択) = vbBoolean) Then Exit Sub End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14 | ひとつのインプットボックスで、複数のセルに入力するには? http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200307/03070292.txt 「InputBox を1回で済ます方法」 【VBAラウンジ】 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sub test() Dim Myst As String Const Myprompt As String = _ "都道府県名," & vbCrLf & "郡市区町村名," & vbCrLf & "町丁目番地," & _ vbCrLf & "の順にカンマ区切りで入力して下さい" Do Myst = InputBox(Myprompt, "住所入力") If Myst = "" Then Exit Sub Loop While InStr(1, Myst, ",") = 0 With Cells(1, 1) .Value = Myst .TextToColumns DataType:=xlDelimited, Comma:=True End With End Sub このコードの使い方は、マクロの使い方(1)標準モジュールにあります。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||