- 締切済み
VBA条件文について
はじめまして。 現在、VBAで簡単な勤務管理表を作成しております。 その過程で、一部分の条件が意図するように動作せず悩んでいます。 ------------------------------------------------------------ If Left(Schedule.Cells(16, 3).Value, 2) = "祝日" Then Schedule.Cells(16, 3).Font.Color = vbBlue Schedule.Cells(16, 3).Interior.Color = vbRed End If ⇒対象のセルの値の先頭2文字が「祝日」の場合、 セルないしセルの文字の色を設定する ------------------------------------------------------------ 初歩的な質問で申し訳ございませんが、 誤りについてご教授いただけませんでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kybo
- ベストアンサー率53% (349/647)
「Schedule」がシート名を格納した変数名である場合以下の様にします。 Sub macro() Schedule = "Sheet1" With Worksheets(Schedule) If Left(.Cells(16, 3).Value, 2) = "祝日" Then .Cells(16, 3).Font.Color = vbBlue .Cells(16, 3).Interior.Color = vbRed End If End With End Sub あなたのその記述方法は、シートのオブジェクト名を「Schedule」にした場合の記述方法です。 ※画像の様にオブジェクト名の部分を変更した場合のものです。 ※このオブジェクト名を変更して、さらに上記macroを実行するとエラーとなりますのでどちらかをして下さい。
- TAKA_R
- ベストアンサー率32% (26/79)
ワークシート名のScheduleがうまいこと登録?できていないか、 変えたいセルがactivateされていないのではないでしょうか。 (同じシート内でScheduleを削除したら変化していましたよ) もしかして・・・違うセルを選んでる?
お礼
ご回答いただきまして、ありがとうございます。 原因が判明致しました。 非常にお恥ずかしいのですが、 該当プロシージャを呼び出す順番に問題がございました。 詳細としましては、 別のワークシートに入力した内容(スケジュール表に転記する前の情報)を 今回のvbaよりスケジュール表に転記するようなマクロなのですが、 転記前に「先頭が”祝日”なら・・・」という条件をCallしていた為、 NULLと判断され条件不一致となっておりました。 よって、転記後に同条件のプロシージャをCallすることで、正常に動作するようになりました。 皆様のお手を煩わせてしまい、申し訳ございませんでした。 本当にお恥ずかしいです。。。
- usb_memory
- ベストアンサー率76% (23/30)
まず、Scheduleとはなんでしょうか? WorkSheetオブジェクトなら問題なさそうですが。。WorkBookオブジェクトかな? 試しに下記で試すとどうなりますか? With Worksheets("シート名") If Left(.Cells(16, 3).Value, 2) = "祝日" Then .Cells(16, 3).Font.Color = vbBlue .Cells(16, 3).Interior.Color = vbRed End If End With
お礼
ご回答いただきまして、ありがとうございます。 原因が判明致しました。 非常にお恥ずかしいのですが、 該当プロシージャを呼び出す順番に問題がございました。 詳細としましては、 別のワークシートに入力した内容(スケジュール表に転記する前の情報)を 今回のvbaよりスケジュール表に転記するようなマクロなのですが、 転記前に「先頭が”祝日”なら・・・」という条件をCallしていた為、 NULLと判断され条件不一致となっておりました。 よって、転記後に同条件のプロシージャをCallすることで、正常に動作するようになりました。 皆様のお手を煩わせてしまい、申し訳ございませんでした。 本当にお恥ずかしいです。。。
補足
usb_memoryさん ご回答いただきまして、ありがとうございます。 上記、試してみましたが 動作は変わりませんでした。 >まず、Scheduleとはなんでしょうか? 失礼しました。 こちらはワークシート名になります。
お礼
ご回答いただきまして、ありがとうございます。 原因が判明致しました。 非常にお恥ずかしいのですが、 該当プロシージャを呼び出す順番に問題がございました。 詳細としましては、 別のワークシートに入力した内容(スケジュール表に転記する前の情報)を 今回のvbaよりスケジュール表に転記するようなマクロなのですが、 転記前に「先頭が”祝日”なら・・・」という条件をCallしていた為、 NULLと判断され条件不一致となっておりました。 よって、転記後に同条件のプロシージャをCallすることで、正常に動作するようになりました。 皆様のお手を煩わせてしまい、申し訳ございませんでした。 本当にお恥ずかしいです。。。