- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでウェイトの値を変数化する時の型は?)
VBAでウェイトの値を変数化する時の型は?
このQ&Aのポイント
- Excel VBAで制御のプログラムを書いています。ウェイトに関して質問なのですが、今、たとえば0.12秒のウェイトを入れる場合、Application.Wait [Now() + "0:00:00.12"] という形で、1/100秒単位の待ちを入れています。(正確かどうかは置いておいて…) "0:00:00.12"の部分を変数、例えば"wait_time"にして、 たとえば、wait_time = ThisWorkbook.Sheets("Sheets1").Range("A1").Value みたいな感じで、セルに記述された時間を待つようにしたいのですが、 "0:00:00.12"はそもそも何型なのでしょうか? 文字列でもないようで、上記の方法ではうまく行きません。また、セルの書式も何型にすればよいのでしょう。
- "0:00:00.12"の部分を変数化してセルに記述された時間を待つようにしたい場合、どのような型を使用すればよいか疑問です。この問題を解決するためには、変数の型を正確に認識する必要があります。
- ウェイトの値を変数化する際に使用する型について質問があります。具体的には、"0:00:00.12"の部分を変数として扱いたい場合、どの型を使用すればよいのか知りたいです。また、セルに記述された時間を待つためにはどのセルの書式を設定すればよいのかも教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
"0:00:00.12" は文字列型ですよ。でも [Now() + "0:00:00.12"] はVariant型だよね。 結局やりたいことは Application.Wait [Now() + Sheets1!A1] とするか、 wait_time = ThisWorkbook.Sheets("Sheets1").Range("A1").Value Application.Wait Now() + wait_time とする。 > セルの書式も何型にすればよいのでしょう。 適当でいいんじゃないの。
その他の回答 (1)
- DreamyCat
- ベストアンサー率56% (295/524)
回答No.1
型については省略します。 セルにはそのまま時刻形式で入力します 0:00:00.12 Application.Wait Now() + Range("A1").Value 上記がいいですが、どうしてもというなら テキスト形式だとエラーになりますので "0:00:00.12"ではなく '0:00:00.12 で入力しテキストとして扱います。 Application.Wait Now() + TimeValue(Range("A1").Value) なおApplication.Waitも含め単発での秒未満の動作はできませんし、時間に関してWindows自身の制約があります。timer関数を使っても0.016秒以上、またはときどきそれよりもずっと長いインターバルになります。
質問者
補足
Application.Wait Now() + TimeValue(Range("A1").Value) では、「型が一致しません」と起こられました。 うーん。 ちなみにApplication.Waitで1秒未満測れています。
お礼
Application.Wait [Now() + Sheets1!A1] で上手く行きました!!ありがとうございます。