- ベストアンサー
エクセル2000でのVBAについて
- エクセル2000でのVBAのIF文を1つにまとめる方法を教えてください。
- エクセル2000のVBAで条件に応じてシートのロックを解除する方法を教えてください。
- エクセル2000のVBAで数式バーを表示する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これを読んで理解したうえで書き直せと? やりたい事の説明くらい書いたらどうでしょう? なぜ Range("E16") = "申請者" Range("E16") = "所属長承認" Range("F16") = "所属長承認" このような分岐が必要なのか理解出来ません。 これらのセルを見てアクティブシートが何かを判定をしてる?
その他の回答 (2)
- keikan
- ベストアンサー率42% (75/176)
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が正しくなければ何も実行されない
- bigdisplay
- ベストアンサー率33% (25/75)
Select Case ステートメントではダメでしょうか? HELPで確認してください。