[[20170223181244]] 『VBAでエラーメッセージの表示について』(ハム太郎) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでエラーメッセージの表示について』(ハム太郎)

いつもお世話になっております。

現在、入力値に対するエラーメッセージのVBAを作成しており、
初心者の為、お伺いしたいのですが、

B1 りんご 
B2 バナナ
B3 みかん

D1 いちご

とした場合、D1の“いちご”が、B1〜B3の候補に無いのでエラーメッセージを
出したいので、下記のようにしたところ

■Aパターン
If .Range("B1,B2,B3") <> .Range("D1") Then
MsgBox "入力が間違っています", vbOKOnly + vbExclamation

D1に“みかん”と正解が入ってもエラーメッセージが出ます。

D1をB1〜B3のリストにして選択式にすれば・・・。という方法もあるのですが、
そうではなく、複数の候補に対して、選択値が異なる場合にエラーを表示したいと思ってます。

あと、

■Bパターン
If .Range("B1") <> .Range("D1") Or .Range("B2") <> .Range("D1") Or .Range("B3") <> .Range("D1") Then
MsgBox "入力が間違っています", vbOKOnly + vbExclamation

とやっても、結果は同じで・・・、D1が“みかん”でもエラーが表示されます。

IFの構文の作り方なのだと思いますが、混乱してしまって。。。
助けて頂けないでしょうか。よろしくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


すみません、解決しました。

BパターンでAndにすれば、正確に働きました。
失礼しました。
(ハム太郎) 2017/02/23(木) 18:36


 もう見ないかとは思いますが・・・

 仮に シート上で、この処理を行おうとすれば、どこかのセルに、たとえば =IF(ISERROR(MATCH(D1,B1:B3,0)),"入力が間違っています","")

 こんな式を書くことで実現できますよね。

 この処理を VBA流に記述すると以下のようになります。

 Sub test()

    If IsError(Application.Match(Range("D1"), Range("B1:B3"), 0)) Then
        MsgBox "入力が間違っています"
    End If

 End Sub

( β) 2017/02/23(木) 19:28


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.