Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


29178 / 76738 ←次へ | 前へ→

【52845】Re:Caseに複数の条件
発言  ichinose  - 07/12/5(水) 23:32 -

引用なし
パスワード
   こんばんは。

>私はExcelで、イラストロジックを途中まで解いてくれるプログラムを、最終的には作ろうと思っています。

これにCase文が本当に合っているか否かは???ですが・・・。


>そのために、3つのセルに、それぞれ入力されているかされていないかで、異なる動きをするプログラムを作ろうと思っています。
>例えば、
>「B5は入力あり」かつ「C5は入力なし」かつ「D5は入力あり」のとき「「成功!」というメッセージボックスを表示する」
>当てはまらないときは、「「失敗・・・」というメッセージボックスを表示する」
>といった風にです。
>これをCaseで作りたく、下のように作ってみたのですが、思うように動きません。
>
>Sub テスト()
>  Select Case Range("B5,C5,D5")
>      Case Is = Not Empty, Is = Empty, Is = Not Empty
>        MsgBox "成功!"
>      Case Else
>        MsgBox "失敗・・・"
>  End Select
>End Sub
本当に上記のように二つの分岐なら、IF文で十分ですよね??

それとも拡張性を重視してのCase文(将来的に条件が増えても対応可能なため)
なんでしょうか?

あるいは、上記コードは例題としてと言う意味で実際には、もっと
条件が増えることが前提なのでしょうか?

等がわかりませんが・・。

標準モジュールに
'===================================================
Sub main()
  Dim rng As Range
  Dim result As Variant
  Set rng = Range("b5:d5")
  result = Join(Evaluate("if(" & rng.Address & "="""",0,1)"), "")
  Select Case result
   Case "111"
     MsgBox "有有有"
   Case "001"
     MsgBox "無無有"
   Case "101"
     MsgBox "有無有"
   Case Else
     MsgBox Replace(Replace(result, "0", "無"), "1", "有")
   End Select
End Sub

アクティブシートにセルB5〜D5に適当なデータを入力後(未入力も含む)、
上記のmainを実行してみてください。
B5,C5,D5の順序で1がデータ有り、0がデータ無しを意味します。

試してみてください。

0 hits

【52817】Caseに複数の条件 セイチ 07/12/4(火) 23:34 質問
【52820】Re:Caseに複数の条件 りん 07/12/5(水) 6:40 回答
【52840】Re:Caseに複数の条件 neptune 07/12/5(水) 20:42 回答
【52842】Re:Caseに複数の条件 ponpon 07/12/5(水) 21:57 発言
【52844】Re:Caseに複数の条件 セイチ 07/12/5(水) 23:31 お礼
【52855】Re:Caseに複数の条件 neptune 07/12/6(木) 12:05 回答
【52845】Re:Caseに複数の条件 ichinose 07/12/5(水) 23:32 発言
【52889】Re:Caseに複数の条件 セイチ 07/12/7(金) 22:46 お礼

29178 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free