'MsgBox SelectArray(Array("a","b","c"), "数値入力専用ダイアログ", 0, 0)
'MsgBox SelectArray(Array("a","b","c"), "数値+任意併用ダイアログ", 0, 1)
'-------------------------------------------------------------------------------
' 指定した配列で選択リストを作成する
' iArray :表示するアイテム
' sTitle :ダイアログのタイトル
' vDefault :デフォルト値
' iMode :戻り値モード、=0ならば非該当は-1を返す、<>0ならば非該当は入力値を返す
'-------------------------------------------------------------------------------
Function SelectArray(iArray, sTitle, vDefault, iMode)
SelectArray = -1
If VarType(iArray) < vbArray Then Exit Function ' 配列ではない
If UBound(iArray) = -1 Then Exit Function ' 空の配列である
Dim r
Dim i, s, t
For i = 0 To UBound(iArray)
s = s & i & " | " & iArray(i) & vbLf
Next
t = InputBox(s, sTitle, vDefault)
' 数値変換
i = -1
On Error Resume Next
If t <> "" Then i = CInt(t)
On Error GoTo 0
If i >= LBound(iArray) And i <= UBound(iArray) Then
r = i
Else
If iMode = 0 Then
r = -1
Else
r = t
End If
End If
SelectArray = r
End Function