- ベストアンサー
エクセルで時間と連動して数値を変えるには????
エクセル2010 で10時から12時の間には1がセルに入力されてそれ以外には0が入力されるというコードをマクロで作っているのですがどうしてもエラーになります If Time >= TimeValue("10:00") And Time <= TimeValue("12:00") Then Range("a1") = "1" Else Range("A1") = "0" End if 何がおかしかったのでしょうか??????? どなたかできればでいいので正しいマクロコードを教えて下さい お願いします ちなみに中1です
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3の回答者です。 #1のお礼の欄の 「Timeと書いた所が ”FuncTion または変数が必要です” とエラーが出ます」 というのは、もしかしたら、 Sub Time() やFunction Time()という題名のプログラムがあるのではありませんか? VBAには、予約語(予めシステム側が使っている用語)の制約は少ないのですが、こうしたシステムで使っている単語(Token トークン)をプログラムの題名には使ってはいけないのです。
その他の回答 (3)
- WindFaller
- ベストアンサー率57% (465/803)
そのコード自体には問題はありません。 もし、ミスをするとすれば、Time を別なタイプで宣言したりしたかもしれません。 質問には書かれていませんが、当然のことながら、Sub ~ End Sub に入れるのは分かっているとは思います。 また、入門時にはどこに入れるか区別が付きませんが、Excel VBAでは、多くのコードは、標準モジュールにコードを書きます。シートモジュールなどは、別の目的で使います。(今回のコードは、それによってエラーは出ません) セルに代入する時は、文字列("1","0")は、数値に自動的に変換(キャスト)されてしまいますから、" "(クォーテーションマーク)は、不要です。 入門時には不要ですが、Range("A1")は、.Valueプロパティをつけたほうがよいです。それは、学習する段階で、Range("A1")に代入する方法として、いくつかの方法がありますから、より区別が分かりやすくするために、プロパティをつけます。 #1さんの指摘にもありますが、大文字・小文字の違い(A1,a1, if) などは、VBA自体では違いは出ませんが、それは、後々、プログラミングの学習が発展していくなかで、重大なミスの原因となりますから、正しく書くように習慣づけてください。
お礼
まず基礎的な事を固めていくべきでした回答ありがとうございます
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
7) タイマーを使った制御 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv214.html#8-1 開始時刻から終了時刻まで一定間隔でマクロを実行するには? http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9c134.html
お礼
回答ありがとうございます!
- kokorone
- ベストアンサー率38% (417/1093)
どこで、どのようなエラーが発生しますか? ほかに、条件はありませんか? A1セルに保護が掛かっているとか。 少なくとも、ここに書かれている処理は私の環境では正常に動作します。 ちなみに”a1”と”A1”と異なる記述をしている理由は何ですか? 補足をお願いします。
補足
Timeと書いた所が ”FuncTion または変数が必要です” とエラーが出ます 保護はかかってないです "a1"と"A1"異なる記述をしている理由は特にないです Timeの部分をTimerに変えたらなにも起きませんでした やっぱり不可能??????
お礼
sub time とうってはいけないんですね やっとわかりました!回答ありがとうございます