• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル2000でのVBAについて)

エクセル2000でのVBAについて

このQ&Aのポイント
  • エクセル2000でのVBAのIF文を1つにまとめる方法を教えてください。
  • エクセル2000のVBAで条件に応じてシートのロックを解除する方法を教えてください。
  • エクセル2000のVBAで数式バーを表示する方法を教えてください。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

これを読んで理解したうえで書き直せと? やりたい事の説明くらい書いたらどうでしょう? なぜ  Range("E16") = "申請者"  Range("E16") = "所属長承認"  Range("F16") = "所属長承認" このような分岐が必要なのか理解出来ません。 これらのセルを見てアクティブシートが何かを判定をしてる?

その他の回答 (2)

  • keikan
  • ベストアンサー率42% (75/176)
回答No.2

end ifの位置がおかしいのかな? 最初のIF文で Range("E16") = "申請者" を評価していますが、end ifの位置が全部末尾にあるため 構造上IFの入れ子状態になっています。 しかしながら、評価の対象がすべてRange("E16")になっているので、Range("E16") = "申請者" であったとき Sheets("ログイン").Select Sheets("報告票").Select ActiveSheet.Unprotect Range("M3:U7").Select Selection.Locked = False Selection.FormulaHidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True '数式バー表示 Application.DisplayFormulaBar = True Range("H9").Select Else: Sheets("ログイン").Select までは実行されますが、 それ以下の2つのIF文は必然的に式が成り立たないため実行されません。 Range("E16") が "申請者"であって同時に "所属長承認"でもあるときはないと思います。 最初のIF文のブロックが終わったときにend ifを入れましょう。 2番目3番目のIF文は同じ評価をしていますのでIF文が1つになります。 If Range("E16") = "所属長承認" Then Sheets("報告票").Select ActiveSheet.Unprotect Range("D3:L7").Select Selection.Locked = False Selection.FormulaHidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True '数式バー表示 Application.DisplayFormulaBar = True Range("H9").Select Else: Sheets("ログイン").Select 'If Range("F16") = "所属長承認" Then このIF文を削ってください。 Sheets("報告票").Select ActiveSheet.Unprotect Range("BS3:CA7").Select Selection.Locked = False Selection.FormulaHidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True '数式バー表示 Application.DisplayFormulaBar = True Range("H9").Select Else: Sheets("ログイン").Select end if 文の流れ例 ************ if A THEN 実行1 end if if B THEN 実行2 end if 条件Aが正しければ実行1を行う。 条件Bが正しければ実行2を行う。(条件Aには無関係) *************** if A THEN 実行1 if B THEN 実行2 end if end if 条件Aが正しければ実行1を行う。 かつ、条件Bが正しければ実行2を行う。 条件Aが正しくなければ何も実行されない ******************** if A THEN 実行1 else 実行2 end if 条件Aが正しければ実行1を行う。 そうでなければ(条件Aが正しくなければ)実行2を行う。 **************** if A THEN 実行1 else if B THEN 実行2 end if 条件Aが正しければ実行1を行う。 条件Aが正しくなく条件Bが正しければ実行2を行う。 条件Aが正しくなく条件Bが正しくなければ何も実行されない

回答No.1

Select Case ステートメントではダメでしょうか? HELPで確認してください。

関連するQ&A

専門家に質問してみよう