![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
色々調べたのですが、見つからず困っております。
時間差を求めるマクロコードを教えてください。
例えば、
A1に 18:11:22
B1に 18:15:22
と別々の時刻を入力されているとします。
時刻の差分を出したいのですが、マクロを使用しない場合はC1に=IFERROR(a1-b1,"")とします。
ですがマクロを登録する場合
Cells(1, 1) = Cells(1, 2) - Cells(1, 3)とコードを書いてもエラーになってしまいます。
時刻の差分を求めるにはdateadd関数かformula関数を使用することは調べたのですが
コードの組み合わせが浮かびません。
どなたか教えてください。
後、入力されている分を計算してほしいので繰り返し処理のコードも出来ましたら教えていただきたいです。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんばんは
>Cells(1, 1) = Cells(1, 2) - Cells(1, 3)とコードを
>書いてもエラーになってしまいます
計算方法としては間違ってはいませんけれど、質問文でご説明のセル位置と違っています。
そのコードだと、A1セルに B1 - C1 の結果を記入することを意味しています。
推測ですが、エラーになるのは、B1かC1に文字などが入力されていたりしませんか?
その記述法であれば、
Cells(1, 3) = Cells(1, 2) - Cells(1, 1)
とすれば、そのまま結果が表示できると思います。
(C1セルの表示形式は、時間表示にしておく必要があります)
どうやら、質問者様にはわかりにくいようなので、
Range("C1") = Range("B1") - Range("A1")
という記述法の方が、良いのかもしれません。
ただし、エクセルの時間は負の値を許しませんので、A1>B1 の場合には上記の計算はエラーになります。
ご提示の関数式のように、これを回避するなら、同様の処理を行えばよいです。
If Range("B1") >= Range("A1") Then Range("C1") = Range("B1") - Range("A1") Else Range("C1") = ""
>後、入力されている分を計算してほしいので繰り返し処理のコードも
>出来ましたら教えていただきたいです。
ループ等で繰り返し処理を行う場合は、Cells( row, collumn ) 形式を用いる方が便利です。
例えば、1行目から10行目迄を繰り返すのなら
For r = 1 To 10
Cells(r, 3) = Cells(r, 2) - Cells(r, 1)
Next r
のような要領で、行(または列)を変数にして指定すれば宜しいでしょう。
No.3
- 回答日時:
こんにちは。
>A1に 18:11:22
>B1に 18:15:22
>Cells(1, 1) = Cells(1, 2) - Cells(1, 3)
この前提なら
Cells(1,1)がA1セル、
Cells(1,2)がB1セル、
Cells(1,3)はC1セル
になるけど、C1セル値が時刻でなければエラーになりそうです。
No.2
- 回答日時:
>繰り返し処理のコード
見落としましたが、意味が理解できませんでした
Dim i As Long
i = 1
MsgBox Format(Cells(i, 1).Value2 - Cells(i, 2).Value2, "hh時間,n分,s秒")
日またぎなどは考慮していません
No.1
- 回答日時:
こんばんは
シリアル値として
Dim StartDate As Date, EndDate As Date
StartDate = Range("A1").Value2
EndDate = Range("B1").Value2
MsgBox DateDiff("h", StartDate, EndDate)
MsgBox DateDiff("n", StartDate, EndDate)
MsgBox DateDiff("s", StartDate, EndDate)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
エクセルのマクロについて教え...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
ExcelのVBA。public変数の値が...
-
特定文字のある行の前に空白行...
-
Excel_マクロ_現在開いているシ...
-
Excel VBAからAccessマクロを実...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
wordを起動した際に特定のペー...
-
ExcelVBAでPDFを閉じるソース
-
EXCELマクロでのThisisWor...
-
VBA アドインについて お詳しい...
-
エクセルに張り付けた写真のフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
Excel マクロでShearePoint先の...
-
ExcelVBAでPDFを閉じるソース
-
特定文字のある行の前に空白行...
-
マクロ実行時、ユーザーフォー...
-
wordを起動した際に特定のペー...
-
エクセルで別のセルにあるふり...
-
ソース内の行末に\\
-
マクロで空白セルを詰めて別シ...
-
【EXCEL VBA】オートシェイプを...
-
エクセルのマクロをセルの値に...
おすすめ情報