• ベストアンサー

VBA 時間の表示の判定

VBAで時間の判定をしたい場合 どのようなコードを書けばよいでしょうか? 条件書式や、書式設定などの方法はたくさん載っていますが VBAで行いたいです。 具体的はA1からJ1セルにh:mmのフォーマットで時間が表示されています。 マクロを実行すると、A1からJ1の範囲内で マイナス表示のセルは赤で塗りつぶし 0:15以内なら黄色で塗りつぶし 0:15以上なら青で塗りつぶしを行いたいです。 よろしくお願いします。

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

VBAの場合、日付シリアル(時刻を含む)は、例によって 「1900年1月1日を1とする実数」であらわされます。 ですので、2019/6/14 18:00:00 は 43630.75 と言う数値が セットされていて、それを表示形式で直しているだけですから、 VBAでデータを取得すると43630.75としかならないんです。 ということで、時刻を比較する場合、まずは取得した数値から 整数部分を切り離して(=A1-INT(A1)とか)、小数値で直接 チェックするか(=15/60/24=0.01041667とか)、Time関数を 使って(=TIME(0,15,1)とか)チェックするかしないと、計算 できません。 こういう原則が分かれば、あとは別に難しいことはないです。

関連するQ&A

  • VBAでセルに色付けは?

    教えてください エクセルの条件付き書式では下記の 事ができません。 VBAでセルに色をつける 方法を教えて欲しいのですが。 例 セルA1 に 10   セルB1 に 入れた数字が      10以下なら   青   11から20なら 赤   21から25なら 黄   26以上なら   ピンク   と言う感じで  B1 のセルに   その数字と色を表示したいのですが   最終的には8色表示にしたいです。   よろしくお願いします   WINXP  EXCLは2002です

  • セルの色をマクロで判定

    セルの色をマクロで判定したいのですが、知恵をお貸し下さい。 シート1のA1セルからA40と      C1セルからC40と      E1セルからE40セルを確認しセルが黄色だったら シート2のF1セルからF40      H1セルからH40      J1セルからJ40の同じ配列の所(A1だったらF1)のセルを赤色にしたいのですが、どのようなマクロを組むといいのでしょうか、どうか宜しくおねがいします。

  • エクセルVBA 郵便番号の書式判定について

    お世話になります。 現在VBAの勉強としてエクセルでマクロを書いているのですが、セル内に郵便番号や日付を入れたときの書式判定で悩んでいます。 例えば、セルの範囲A2:A10に「000-0000」の形で郵便番号が表示されるように、表示形式を設定したとします。 その際に、表示されている値が 「数値3桁」+「-」+「数値4桁」といった形で表示されていることを判定したい場合、どのように記述する方法があるでしょうか? ちなみに、私は今順番を関係なく、セルの値を取得した後で前3桁と記号と後ろ4桁に分解し、 それぞれが数値か、それとも「-」かで判定を行っています。 ほかにも方法がありましたら、参考までに知恵をお貸しください。 よろしくお願いいたします。

  • 【VBA】複数条件下での色付

    お願いします。 (XP・エクセル2003) ※たとえばA列に『あ』『い』『う』『え』『お』の5種の文字のいづれかが1行目から100行目まで並んでいるとします。(空白セルはなく必ずいずれかの文字が入っている) (1)『あ』の文字のときにはそのセルの色を赤色、『い』ならば青、『う』ならば黄、『え』ならばピンク、『お』ならば茶、と色をかえるマクロを作りたいのですが、方法がわかりません。 (2)同じく、※の条件下で『あ』もしくは『い』のときにはセルの色をどちらも緑にかえる方法を条件付き書式でなく、マクロで作る必要があるのですが、方法がわかりません。 教えてください。 よろしくお願いします。

  • Excel VBA 条件付書式の条件満たすセル取得

    Excel2010のVBAで条件付書式の条件を満たすセルの番地を取得したい 具体的には、 Excel2010のあるシートのあるセル範囲(例えばA1~XFD1048576)に 条件付き書式が付けてあって、 (例えば、数式の条件が満たされたら背景色を赤色にするなど) この条件を満たすセルに指定した書式が付けられて表示されています。 この状態で、VBAで、この条件を満たしたセルの番地を、 順番に取得したいのですが、どのように記述すればよいでしょうか。 【追記】 数式をすべてのセルに入れて検出する方法や セルをひとつずつ数式に当てはめてみていく方法は、 セルが膨大なため容量的・時間的にNGです。 このため、条件付き書式で回避しています。 条件付き書式の判定結果である書式(この場合でしたら背景色が赤色) で判断する必要があります。(書式は背景色が赤色でなくてもいいです) よく分かりませんが、検索の中の書式で指定しても、 この条件付き書式の判定結果の書式はヒットしませんでした。

  • 【EXCEL2003】8つの条件がある書式設定のVBAの書き方

    VBAの書き方について御教授ください! 複数のシートに、入力値が決まっているA列とC列があります。 その入力値の組み合わせによって、入力時にA:Cのセル書式を以下のように8通りに変えたいです。 マクロの自動記録しか経験がなく調べたのですがよくわかりませんでした。 よろしくお願いいたします。 1.A列「あ」・C列なし→セル背景:黄 2.A列「あ」・C列「ア」→セル背景:黄 フォント:青 3.A列「あ」・C列「イ」→セル背景:黄 フォント:赤 4.A列「い」・C列なし→セル背景:緑 5.A列「い」・C列「ア」→セル背景:緑 フォント:青 6.A列「い」・C列「イ」→セル背景:緑 フォント:赤 7.A列なし・C列「ア」→フォント:青 セル背景:なし 8.A列なし・C列「イ」→フォント:赤 セル背景:なし

  • エクセルの時間計算について

    どなたかよろしくご教授ください。 =SUM(A1-B1)で退社時間から出社時間を引いて 一日の労働時間を出しています。 このセルの書式設定は [<0]"0:00";[h]:mmを選んであります。 A1とB1が同じ時間なら0時間となって何も表示されないのでいいのですが A1<B1の場合、マイナスになる為エラー表示としてなのか 0:00が表示されてしまいます。 0もマイナスも非表示にしたいのですが、どうすればよいでしょうか。

  • EXCEL VBAで特定のセルの値による判定について

    すいません、EXCEL VBAで質問があります。 A1~A9 空欄 A10 "赤" A11~A16 空欄 A17 "青" A18~A21 空欄 A22 "青" A23~A35 空欄 A36 "赤" ・・・ A列の1000行までの間にランダムに赤か青の値が入っています。 A列の空欄のセルについて、下のセルを見ていき、 最初に来る値が赤であれば、それまでの空欄に"りんご"、青であれば"みかん"という値を入れる処理をVBAでやるにはどうしたらいいのでしょうか。 上の例でいうと、A1~A9及びA23~A35のセルには"りんご"、A11~A16及びA18~A21のセルには"みかん"と入ります。 do until~loopやfor~nextでやろうとしましたがどうにもうまくいきません。 よろしくお願いいたします。

  • VBAでセルを条件数う塗りつぶしたい

    特定のセル文字(記号)を入力すると、その横のセルに条件分の数セルを塗りつぶしたいです。 条件付き書式ではなんとかできたのですが、できればVBAでできればと思っています。 たとえば、◎なら右に3つ黄色に △なら右に2つ青 ○なら右に1ピンク ☆なら、表の端まで赤に。 すべて、表が終われば、塗りつぶしはなしにしたいです。 どうか、よろしくお願いします。

  • VBAの判定の仕方を教えてください。

    EXCEL2000のVBAでの判定の仕方を教えてください。 あるセルに答えを入力します。答えが合っていれば”正解”、合っていなければ”間違っています”というようにしたいのです。 例えばC1のセルに「abc」を入力したらD1のセルに ”正解”と表示し、「abc」以外の入力の時には”間違っています”と表示させます。 答えは英文字の他に数字「123」・文字「マクロ」等を考えています。不正解についても幾通りか表示させたいのですがやり方が解りません。 「例えば半角で入力してください」と表示する。 参考になる事、解るとこだけでもかまわないです。 宜しくお願いします。

専門家に質問してみよう