プロが教えるわが家の防犯対策術!

はじめまして、
マクロを使ってタイマーをセットしているのですが、
たとえば1行A列に9:00:00という時間をセットして、
それをマクロでうけとりmacro1というマクロを時間とおりに動かすようにタイマーにせっとします。
プログラムは以下のとおりなのですが、
TimeValue(Cells(1, 1))のところがうまくいきません。

解決方法を教えてください。
よろしくお願い思案す。


Set_timer = TimeValue(Cells(1, 1))
Cells(5, 3) = "設定完了"
MsgBox "タイマーを設定しました。"
Application.OnTime TimeValue(Set_timer), "macro1"

A 回答 (3件)

こんにちは。



TimeValueの引数は文字列でなければいけません。

ところがセルに時刻を入力すると見た目は時刻ですが、実際の値は「シリアル値」と呼ばれれる値になります。

文字列のところにシリアル値を入れているので「型が一致しません」とエラーになるのです。

そこでこのシリアル値を表示と同じような文字列に変換してやります。

Set_timer = TimeValue(Cells(1, 1))
     ↓
Set_Timer = Format(Cells(1, 1).Value, "h:mm:ss")

とします。どうでしょうか。
    • good
    • 2
この回答へのお礼

ありがとうございます。
できました!
なるほど、シリアル値になっているのでフォーマットする必要があるのですね。
勉強になりました!

お礼日時:2006/05/14 12:47

>今、試してみたのですが、型が一致しませんとのエラーが表示されます。



>Set_timer = TimeValue(Cells(1, 1))

これ、残ってませんか?
    • good
    • 0

多分


>1行A列に9:00:00
この時点で、値が時間になっているのでTimeValueは不要ということだと思います
Application.OnTime (Cells(1, 1)), "macro1"
で、どうでしょうか

この回答への補足

さっそくのご返事ありがとうございます。

今、試してみたのですが、型が一致しませんとのエラーが表示されます。

デバッグして値を確認すると
Cells(1,1)の値は0.37511・・・・という値になっています。

補足日時:2006/05/14 11:46
    • good
    • 0
この回答へのお礼

いろいろありがとうございました。
No3の方の方法でできました。

お礼日時:2006/05/14 12:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A