Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
IF文について
投稿日時: 18/10/12 08:59:23
投稿者: はじめて

お世話になります
 
IF文の入れ子についてご教授お願いします。
 
Sub macro2()
 
Dim 判定 As Integer
判定 = 10
 
If 判定 = 2 Then
     MsgBox "偶数です"
    ElseIf 判定 = 4 Then
        MsgBox "偶数です"
         ElseIf 判定 = 6 Then
             MsgBox "偶数です"
              ElseIf 判定 = 8 Then
                  MsgBox "偶数です"
                     ElseIf 判定 = 10 Then
                         MsgBox "偶数です"
 
End If
      
End Sub
 
これで偶数の表示は出ますが、偶数でなければ奇数と表示させたいのですがうまくできません。
また、MSGBOX'偶数です'のコーディング部分がたくさん入っていますが、省略化はできませんでしょうか。
お尋ねします。
よろしくお願いします。
 
 
 
 
 
 

回答
投稿日時: 18/10/12 09:28:17
投稿者: simple

Sub test()
    Dim 判定 As Integer
    判定 = 10        'デバッグ用設定 

    Select Case 判定
        Case 2, 4, 6, 8, 10
            MsgBox "偶数です"
        Case Else
            MsgBox "奇数です"
    End Select
End Sub
ですね。
 
 
余談:インデントについて
Select Caseの際のインデントについては、
    Select Case 判定
    Case 2, 4, 6, 8, 10
        MsgBox "偶数です"
    Case Else
        MsgBox "奇数です"
    End Select
という流儀もあるようです。
冒頭のコードのインデントの付け方は、自動インデントツールのデフォルト設定に従ったものです。
 
なお、貴兄のコードは、インデント面では、
Sub macro2()
    Dim 判定 As Integer
    判定 = 10

    If 判定 = 2 Then
        MsgBox "偶数です"
    ElseIf 判定 = 4 Then
        MsgBox "偶数です"
    ElseIf 判定 = 6 Then
        MsgBox "偶数です"
    ElseIf 判定 = 8 Then
        MsgBox "偶数です"
    ElseIf 判定 = 10 Then
        MsgBox "偶数です"
    End If
End Sub
とするのが一般的でしょう。余り独自なものを作らない方がよいと思います。

投稿日時: 18/10/12 09:38:21
投稿者: はじめて

simple さん
 
早速ありがとうございます。
 Case については勉強したいと思います。
簡素にできていいですね。
インデントについてのご教授もありがたいです。
 
本当にありがとうございました。