[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/04/26(Thu) 13:20
投稿者名:ふく
Eメール:
URL :
タイトル:
If or Case どちらを使用しますか?
いつも参考にしております。
ふと、気になったことがあり皆さんの意見が聞きたく
投稿します。

分岐が2つの場合、IF文、若しくはCase文
どちらをしようしますか?

Dim Flg As Boolean

’IF文
If Flg = True Then
   '処理1
Else
   '処理2
End If

’Case文
Select Case Flg
   Case True
     '処理1
   Case False
     '処理2
End Select
 

投稿時間:2007/04/26(Thu) 13:33
投稿者名:エニックス
Eメール:
URL :
タイトル:
Re: If or Case どちらを使用しますか?
> いつも参考にしております。
> ふと、気になったことがあり皆さんの意見が聞きたく
> 投稿します。
>
> 分岐が2つの場合、IF文、若しくはCase文
> どちらをしようしますか?
>
> Dim Flg As Boolean
>
> ’IF文
> If Flg = True Then
>    '処理1
> Else
>    '処理2
> End If
>
> ’Case文
> Select Case Flg
>    Case True
>      '処理1
>    Case False
>      '処理2
> End Select
>

その時の状況によって使い分けています。どちらかに
かたよるとということはありません。 

投稿時間:2007/04/26(Thu) 14:04
投稿者名:よねKEN
Eメール:
URL :
タイトル:
Re: If or Case どちらを使用しますか?
> 分岐が2つの場合、IF文、若しくはCase文
> どちらをしようしますか?

例のようにTrue/FalseだけならIF文を使います。
この場合は2値以上に増える可能性がないのでSelect Caseを使うことはありません。

私の場合はSelect Case文は以下の2つの条件が揃ったときに使います。
・ある1つの変数に注目している
・現在、2種類の値しか取らないとしても、
 視点によっては3種類以上とみなせる、または、3種類以上に増える可能性が想定される

例えば、性別で条件分岐する場合を考えてみましょう。

Select Case 性別
Case 男
Case 女
Case Else
   Debug.Print "不具合"
End Select

単純に医学上の性別なら、このようになります。
Elseになるパターンはないので、性別に設定された値の不具合の場合です。

しかし、もしこれがアンケートの回答だとしたらどうでしょうか?
アンケートの趣旨によっては、他のケースとして、
「未回答」「不明」「その他」などが追加される可能性もあるでしょう。
(例えば、未回答→答えたくない、不明→まだ生まれていない子供、
その他→ニューハーフ、といった状況がありえます)

視点によって異なる見解がありえるということは、
仕様変更が発生する可能性があるということです。

また、性別という一つのものに着目しており、
男、女といった情報は「性別」という言葉のもとに平等な重みを持っていますので、
If文よりも適切にそのことを表現できていると思います。

投稿時間:2007/04/27(Fri) 13:58
投稿者名:ふく
Eメール:
URL :
タイトル:
Re^2: If or Case どちらを使用しますか?
回答ありがとうございます。

よねKENさんの考え方も書いていただいて
大変わかりやすく、また参考になりました。

> また、性別という一つのものに着目しており、
> 男、女といった情報は「性別」という言葉のもとに平等な重みを持っていますので、
> If文よりも適切にそのことを表現できていると思います。

1か0という判断をできないときにも、
プログラム上でニュアンスが伝わる考え方で
大変参考になりました。