• 締切済み

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文字が「祝日」の場合、    セルないしセルの文字の色を設定する ------------------------------------------------------------ 初歩的な質問で申し訳ございませんが、 誤りについてご教授いただけませんでしょうか?

みんなの回答

  • kybo
  • ベストアンサー率53% (349/647)
回答No.3

「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を実行するとエラーとなりますのでどちらかをして下さい。

london1985
質問者

お礼

ご回答いただきまして、ありがとうございます。 原因が判明致しました。 非常にお恥ずかしいのですが、 該当プロシージャを呼び出す順番に問題がございました。 詳細としましては、 別のワークシートに入力した内容(スケジュール表に転記する前の情報)を 今回のvbaよりスケジュール表に転記するようなマクロなのですが、 転記前に「先頭が”祝日”なら・・・」という条件をCallしていた為、 NULLと判断され条件不一致となっておりました。 よって、転記後に同条件のプロシージャをCallすることで、正常に動作するようになりました。 皆様のお手を煩わせてしまい、申し訳ございませんでした。 本当にお恥ずかしいです。。。

  • TAKA_R
  • ベストアンサー率32% (26/79)
回答No.2

ワークシート名のScheduleがうまいこと登録?できていないか、 変えたいセルがactivateされていないのではないでしょうか。 (同じシート内でScheduleを削除したら変化していましたよ) もしかして・・・違うセルを選んでる?

london1985
質問者

お礼

ご回答いただきまして、ありがとうございます。 原因が判明致しました。 非常にお恥ずかしいのですが、 該当プロシージャを呼び出す順番に問題がございました。 詳細としましては、 別のワークシートに入力した内容(スケジュール表に転記する前の情報)を 今回のvbaよりスケジュール表に転記するようなマクロなのですが、 転記前に「先頭が”祝日”なら・・・」という条件をCallしていた為、 NULLと判断され条件不一致となっておりました。 よって、転記後に同条件のプロシージャをCallすることで、正常に動作するようになりました。 皆様のお手を煩わせてしまい、申し訳ございませんでした。 本当にお恥ずかしいです。。。

回答No.1

まず、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

london1985
質問者

お礼

ご回答いただきまして、ありがとうございます。 原因が判明致しました。 非常にお恥ずかしいのですが、 該当プロシージャを呼び出す順番に問題がございました。 詳細としましては、 別のワークシートに入力した内容(スケジュール表に転記する前の情報)を 今回のvbaよりスケジュール表に転記するようなマクロなのですが、 転記前に「先頭が”祝日”なら・・・」という条件をCallしていた為、 NULLと判断され条件不一致となっておりました。 よって、転記後に同条件のプロシージャをCallすることで、正常に動作するようになりました。 皆様のお手を煩わせてしまい、申し訳ございませんでした。 本当にお恥ずかしいです。。。

london1985
質問者

補足

usb_memoryさん ご回答いただきまして、ありがとうございます。 上記、試してみましたが 動作は変わりませんでした。 >まず、Scheduleとはなんでしょうか? 失礼しました。 こちらはワークシート名になります。

関連するQ&A

専門家に質問してみよう