Excelノート 13-1 メッセージボックス・インプットボックス

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらの
お願いをご覧になってください。

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

’結果を定数から取得して、処理を選択します。 この定数は下の「戻り値の定数」になります。
Sub mikotest()  
 Dim aa
 aa = MsgBox("メッセージボックスのテストです。", vbYesNoCancel + vbQuestion)
 If aa = 2 Then
  MsgBox "キャンセル"
 ElseIf aa = 6 Then
  MsgBox "YES"
 ElseIf aa = 7 Then
  MsgBox "NO"
 End If
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

メッセージボックスの引数一覧
設定値の定数 内容
vbOKOnly 0 [OK] ボタンのみを表示します。
vbOKCancel 1 [OK] ボタンと [キャンセル] ボタンを表示します。
vbAbortRetryIgnore 2 [中止]、[再試行]、および [無視] の 3 つのボタンを表示します。
vbYesNoCancel 3 [はい]、[いいえ]、および [キャンセル] の 3 つのボタンを表示します。
vbYesNo 4 [はい] ボタンと [いいえ] ボタンを表示します。
vbRetryCancel 5 [再試行] ボタンと [キャンセル] ボタンを表示します。
vbCritical 16 警告メッセージ アイコンを表示します。
vbQuestion 32 問い合わせメッセージ アイコンを表示します。
vbExclamation 48 注意メッセージ アイコンを表示します。
vbInformation 64 情報メッセージ アイコンを表示します。
vbDefaultButton1 0 第 1 ボタンを標準ボタンにします。
vbDefaultButton2 256 第 2 ボタンを標準ボタンにします。
vbDefaultButton3 512 第 3 ボタンを標準ボタンにします。
vbDefaultButton4 768 第 4 ボタンを標準ボタンにします。
vbApplicationModal 0 アプリケーション モーダルに設定します。メッセージ ボックスに応答するまで、現在選択中のアプリケーションの実行を継続できません。
vbSystemModal 4096 システム モーダルに設定します。メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。
vbMsgBoxHelpButton 16384 ヘルプ ボタンを追加します。
VbMsgBoxSetForeground 65536 最前面のウィンドウとして表示します。
vbMsgBoxRight 524288 テキストを右寄せで表示します。
vbMsgBoxRtlReading 1048576 テキストを、右から左の方向で表示します。
戻り値の定数 内容
vbOK 1 [OK]
vbCancel 2 [キャンセル]
vbAbort 3 [中止]
vbRetry 4 [再試行
vbIgnore 5 [無視]
vbYes 6 [はい]
vbNo 7 [いいえ]
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 の数値のみを入力する場合
 Dim aa As Integer
 aa = 1
 Do
  aa = Application.InputBox(Prompt:="1または、2の数値を入力してください", Default:=aa, Type:=1)
  If aa = False Then Exit Sub
 Loop Until aa = 1 Or aa = 2
 MsgBox aa & " が入力されました"
End Sub

Sub test3()   'Integer型(-32,768〜32,767)の範囲の、0以外の 整数を入力する場合
 Dim aa As Integer
 aa = 1
 aa = Application.InputBox(Prompt:="数値を入力してください", Default:=aa, Type:=1)
 If aa = False Then Exit Sub
 MsgBox aa & " が入力されました"
End Sub

  これらのコードの使い方は、マクロの使い方(1)標準モジュールにあります。

データ型を指定する場合、Type:=1 の所の、1 を以下のように変更します。
 0   数式
 1   数値
 2   文字列(テキスト)
 4   論理値(True または False)
 8   セル参照(Rangeオブジェクト)
 16  #N/Aなどのエラー値
 64  数値配列

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)標準モジュールにあります。
 

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

このページのTOPへ

 

 

inserted by FC2 system