Excel VBAで時刻の判定

このQ&Aのポイント
  • Excel VBAを使用して、複数のエクセルファイル内の時刻を判定する方法を教えてください。
  • A.xlsとB.xlsという2つのエクセルファイルがあります。A.xlsでは開始時刻と終了時刻が、B.xlsでは開始時刻と終了時刻が記録されています。A.xlsの開始時刻から終了時刻までの時間範囲とB.xlsの開始時刻から終了時刻までの時間範囲が重なっている場合に処理を行う方法を教えてください。
  • 具体的な例として、A.xlsの開始時刻が1:00で終了時刻が3:00、B.xlsの開始時刻が2:00で終了時刻が5:00の場合、時刻がかぶっていると判定する方法を教えてください。
回答を見る
  • ベストアンサー

Excel VBAで時刻の判定

EXCEL VBAの時間判定について質問させてください。 エクセルのブックが2つあり、それぞれを「A.xls」「B.xls」とします。 A.xlsの「A1」に"開始時刻"、「B1」に"終了時刻"が入っており、 B.xlsの「E1」に"開始時刻"、「F1」に"終了時刻"が入っているとき、 A.xlsの開始~終了時間に、B.xlsの開始~終了時間がかぶっている場合に処理を行う、といった判定式を作りたいと思っています。 例) A.xls:A1=1:00 B1=3:00 B.xls:E1=2:00 F1=5:00 上記のとき、メッセージボックスで"時刻がかぶっています"を返す。 A.xls:A1=1:00 B1=3:00 B.xls:E1=3:00 F1=5:00 上記のときは、"問題なし"を返す。 といった感じです。 この時刻の判定に何を用いたら良いのかが分かりません。 よろしくお願いします。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

内容が時刻であれば単に値を比較するだけです。 Aの開始時刻 = Wrokbokks("A.xls").WorkSheets(1).Cells(1, 1).Value 以下略 If (( Aの開始時刻 >= Bの開始時刻 ) AND ( Aの開始時刻 <= Bの終了時刻 )) _ Or (( Bの開始時刻 >= Aの開始時刻 ) AND ( Bの開始時刻 <= Aの終了時刻 )) Then   MsgBox "時刻がかぶっています" End If

sun-sky
質問者

お礼

できました!ありがとうございました。

関連するQ&A

  • excel vba 作成について教えて下さい。

    excel VBAを使ってあるブックのセル範囲を別のブック(日報.XLS)のシートへコピー貼り付けをしたいのですが、コピーする側のブックがランダムに取り込まれ(例 8時間ピッチにて自動的にブックが作成される)そのブックを日にちごとに集計し、一か月ごとにまとめるということをやらなければなりません。 例)8時間ごとにフォルダが作成されます。   000001.XLS 000002.XLS   00000F.XLS ・・・・・・・・16進数にて   上記ブックのSheet1のA2:A11までの数値を別のブック(日報月報集計)のに貼り付ける。 別のブック(日報月報集計)は項目ごとに10個のシートがあり 8時間ごとのファイルのセルA2は別ブックのSheet1の日付けに対応するセルへ貼り付け B2は       Sheet2 上記操作を8時間ごと(可変可能)に自動的にコピー貼り付けをやりたいのですが ブック間のコピー貼り付け等わからないことが(初心者です。)多々あり、いろいろ調べてはいるのですが、STOPした状態です。 出来れば、初心者にも理解しやすい解説等あれば宜しくお願いします。

  • VBAマクロでワークシートを見比べて判定したい

    VBAマクロでワークシートを見比べて判定したい Workbook A.xlsとWorkbook B.xlsがあります。 AにBの情報をいれ、修正したい A.xls(sheet1) 番号  判定 1111   1 2222   0 3333   1 4444   1 B.xls(sheet1) 番号   3333    5555 判定の1は未完 0は完了 Bのファイルに出てくる番号は未完(1)、 出てこないものは完了(0) つまり上の結果のA.xlsは 番号  判定 1111   0 2222   0 3333   0 4444   1 5555   1 A.xlsには過去の分に併せ、Bに出てきたものすべてを出します。 マクロ初心者で基本的なことかもしれないのですが、ご教授願いますm(__)m

  • エクセルで時間の引き算をするには

    お世話になっております。 エクセルでの時間の計算について教えてください。 開始日と終了日と開始時刻と終了時刻が4つのセルに分かれています。それらを使って勤務時間をだしたいのですが、どうしたらいいのでしょうか。 開始日=セルA、終了日=セルB、開始時刻=セルC、終了時刻=セルDとします。これらを使って勤務時間を計算し、時給=セルEを掛け合わせ給料をセルFに出したいのですが、どうやってエクセルにセルAとセルCを2つ認識させ、その上セルBとセルDを引いて勤務時間をだせばいいのでしょうか? (問題のエクセルです↓) セルA セルB セルC  セルD   セルE  セルF 7-Feb-07 7-Feb-07 0:03:12 8:00:00 $22.40 5-Feb-07 6-Feb-07 15:45:47 13:38:43 $9.79 7-Feb-07 9-Feb-07 8:33:46 23:26:24 $17.45 8-Feb-07 8-Feb-07 8:10:30 23:59:51 $21.99 7-Feb-07 8-Feb-07 20:30:23 21:02:25 $14.75 7-Feb-07 9-Feb-07 18:39:50 21:20:00 $13.45 6-Feb-07 6-Feb-07 1:03:42 20:58:34 $21.99 どうぞよろしくお願いいたします。

  • 開始時刻+経過時間=終了時刻になる計算式はありますか?

    エクセルについてお尋ねします。 (1)下記のようにA3に"3"と入力するだけで3時間と認識する事は可能でしょうか? (2)上記の結果をふまえ、開始時刻(A1)に経過時間(A3)を足して終了時刻(A2)を表示する事は可能でしょうか?   A1 → 9:00(開始時刻)   A3 → 3(経過時間)   A2 → 12:00(終了時刻) ←この時刻を求める。

  • エクセル VBA セルの塗りについて

    VBAで下記のようなことをしようと考えております。 ワークスケジュール A B C D E-AF No 開始時間 終了時間 作業者 15分刻みの時刻(08:00-) コマンドボタンを作り、開始時間と終了時間の数値を読み込んで、 E-AFまでのセルに自動で色を塗り分ける。 ワークシートのセル変更に動作する記述はよく見かけますが、ボタンクリックによる動作はなかなか見当たりません。 詳しい方いらっしゃいましたら、よろしくお願いします。

  • excel vba

    テーブル情報に基づきシートをコピーするVBAマクロを記述したい。 ExcelのBook111のSheet1に次のような データが入っています。 (1、2)セルにn=3という数字が入っているものとします。 その数値に合わせて、この場合は3なので Sub Sample01() Workbooks("Book3.xls").Worksheets("booksheet3").Copy After:=Workbooks("Book111.xls").Sheet(1) End Sub のようなつまり、booksheet3なるシートをBook111(固定なBOOK)にコピーしようとしています。 このようなことをVBAで書くにはどうすればいいのでしょうか。 ただしBook名とシート名はあくまでデータの値にもとづいたデータをもってくることになります。 要するに間接参照したデータに基づき処理するのをどのように記述するかという質問です。 A列 B列 1 回数 n=3 2     3     4 Book1.xls book1sheet ←n=1 5 Book2.xls book2sheet ←n=2 6 Book3.xls book3sheet ←n=3 7 Book4.xls book4sheet 8 Book5.xls book5sheet 9 Book6.xls book6sheet ←n=6 10 Abc,xls Defsheet ←n=7

  • エクセルVBAで複数のファイルをひとつにまとめる

    はじめまして。 VBA初心者で恐縮なのですが、教えてください。   ブックAAAがあるフォルダ内に複数ある「***.xls」の全てのフイルのシート「A」内の特定のセル(A1:F30)の文字列を、全てブックAAAの1つのシートの特定の列(A:F)に重ねてまとめたいと思っています。 但し、シート「A」は非表示となっていて、また、「***.xls」のファイルは全て「ブックの保護」がかかっているため、シート「A」を表示させるためにはパスワードの入力が必要となります。 これをVBAを使って実行することは可能でしょうか。複雑で手に負えず行き詰っています。 どなたかご存知の方いらっしゃいましたらご教授願います。 エクセル2007を使用しております。  

  • エクセルVBAでテキストボックスの値の取得と変更について

    エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。 環境:WindowsXPでオフィス2002 状況: エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C) エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい 試した事: コントロールを配置したシートに次のマクロ TEXTBOX_C.Text = "これはコントロールのテキストボックス" を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。 また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

  • Excel VBA ブックが本当に閉じられた時だけ別のブックを閉じたい

    Excel VBA ブックが本当に閉じられた時だけ別のブックを閉じたい A.xls B.xls と二つのブックがあります。 A.xlsが閉じられる時、B.xlsも同時に閉じたいです。 A.xlsに以下のマクロを入れました。 Private?Sub?Workbook_BeforeClose(Cancel?As?Boolean) ?Workbooks("B.xls").Close?SaveChanges:=False End?Sub 問題はA.xlsが保存してない場合、「A.xlsへの変更を保存しますか?」というメッセー ジが 出てきますが、そこでキャンセルを押された場合でもB.xlsが閉じられてしまいます。 A.xlsが本当に閉じられた時だけB.xlsを閉じたいのですが そのようなことは可能でしょうか?

  • Excel 関数の引数で時刻を使いたい

    Excel2007です。 時間の計算をしたいのですがIF関数の引数に22:00等を使う方法を教えて下さい 次のようにすると22時までは計算されるのですが22時以降が計算されません。引数の時間の使い方が間違っているような気がするのですが、時刻を引数として使う方法を教えて下さい。 A1に日付  B2に開始時刻 =IF(WEEKDAY(A2)=7,"8:00","17:30") 土曜日は、8:00 月曜から金曜は、17時 日曜日は、入力しない  C2に終了時刻  手入力 例えば23:00 D2に =IF(C2<="22:00",C2-B2,"22:00"-B2)  開始時刻から22:00時までの時間 E2に =IF(C2>"22:00",C2-"22:00",0)  22:00以降終了時刻までの時間 よろしくお願いします。

専門家に質問してみよう