• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:End Ifは不要な場合もある?)

Excel VBAのコードのエラーについて

このQ&Aのポイント
  • Excel2010使用でVBAのコードを書いている際、特定の部分をコメントアウトするとエラーが出ます。コメントアウトしない場合は正常に動作します。なぜエラーが出るのか理由がわかりません。
  • エラーが出る部分は、If文とEnd Ifの間のコメントアウトされた部分です。この部分をコメントアウトすると、「Elseに対応するIfがありません」というエラーが出ます。
  • また、ほとんど同じ記述の後半ではエラーが出ないため、何か勘違いをしているのかもしれません。どなたか解決策を教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

VBAでは、ifから始まる文を1行で書くと、if~thenの一つの命令と 解釈されます。すなわち If S.Name = "合計" Then Flag = True これで一つの命令になってしまい、次の行以降はif~endifのブロック とはみなされないんです。ブロックにしたい場合は、必ず「then」の後ろ を空欄にしないといけません。すなわち If S.Name = "合計" Then Flag = True else : : と書く必要がある・・・ということです。

Angela_M
質問者

お礼

なるほど納得です。 前半と後半でThen以降の記述のしかたが違っていたことに気づきませんでした。 For Each S In Worksheets If S.Name = "合計" Then flag = True Else flag = False End If できちんと狙い通りに動作しました。 For Each S In Worksheets If S.Name = "合計" Then flag = True ' Else ' flag = False ' End If では逆にエラーが発生することを確認しました。

その他の回答 (1)

回答No.1

×   If S.Name = "合計" Then Flag = True O   If S.Name = "合計" Then       Flag = True

Angela_M
質問者

お礼

ありがとうございます。 おっしゃる記述できちんと動作しました。 Thenのあとにそのまま記述を続ける場合と改行後に記述する場合とで扱いが違うのですね。

関連するQ&A