シート選択について

このQ&Aのポイント
  • エクセルでシートを定時(4回)データを更新させ、更新までの間、シートを自動で選択していくPGを作成したのですが、エクセルを開くと固まってしまいます。
  • データを定時に更新するエクセルのPGで、シート選択を自動化していますが、エクセルを開くと処理が停止してしまいます。
  • エクセルでシートの選択を自動化するプログラムを作成したのですが、エクセルを開いている間は処理が固まってしまいます。
回答を見る
  • ベストアンサー

シート選択について

いつもお世話になっております。 エクセルでシートを定時(4回)データを更新させ、 更新までの間、シートを自動で選択していくPGを作成したのですが、 エクセルを開くと固まってしまいます。 どうかご指導のほどよろしくお願いします。 Private Sub WorkBook_Open() Dim Update1 As Variant Dim Update2 As Variant Dim Update3 As Variant Dim Update4 As Variant Dim Owarijikan As Variant Call DataLoad Update1 = ("08:00:00") Owarijikan = Update1 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update1), "DataLoad" Update2 = ("10:00:00") Owarijikan = Update2 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update2), "DataLoad" Update3 = ("15:00:00") Owarijikan = Update3 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update3), "DataLoad" Update4 = ("16:00:00") Owarijikan = Update4 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update4), "DataLoad" End Sub 'DataLoadはデータ更新のプロシージャです。 -------------------------------- Sub SheetLoop() Dim Jikan As Variant Dim Owarijikan As Variant Jikan = Time Owarijikan = Sheet8.Cells(5, 3).Value Do Until Jikan > (Owarijikan) Application.OnTime TimeValue(Jikan), "Select11" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "SelectC" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "Select12" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "Select13" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "SelectC" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "Select16" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "SelectC" Jikan = Jikan + TimeValue("0:0:05") Loop End Sub ’実行するプロシージャSelectXXはシートを選択するプロシージャです。 以上よろしくお願いします。

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

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

コンパイルしてエラーがないかどうか確認してください。 SheetLoop (Owarijikan) コール側は引数ありですが、実際のプロシージャは引数がありません。

hiron67
質問者

お礼

返事遅くなってすみません。 コンパイルした結果、ミスが発見されました。 おかげで実行できるようになりました。 ありがとうございます。

関連するQ&A

  • エクセルシートの順繰り表示マクロについて

    エクセルにて随時更新されるデータを全画面表示し、3枚のシートを5秒置きに順繰り表示させるようマクロを組みました。始めは順調なのですが、数時間たつとフリーズしてしまいます。そもそもエンドレスのマクロプログラム実行に無理があるのでしょうか。 または下記のプログラムに問題があるのでしょうか。ご教授お願いします。 Sub Macro1() Sheets("Sheet2").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro2" End Sub Sub Macro2() Sheets("Sheet3").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro3" End Sub Sub Macro3() Sheets("Sheet1").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro1" End Sub

  • Excelのontimeについて

    a1に数式が入っています。 c3からd3,e3,f3…に一定時間ごとにa1の値を入力するマクロがあります。 Sub 入力() Sheets("Sheet1").Select Range("a3").End(xlToRight).Offset(0, 1).Select ActiveCell.Value = Cells(1, 1).Value End Sub Sub スタート() Dim MyTime As Date Dim Jikan As Date Dim i As Integer Jikan = TimeValue("13:59:00") For i = 0 To 5 MyTime = Jikan + TimeSerial(0, 0, 5) * i Application.OnTime MyTime, "入力" Next End Sub で、教えていただきたいのですが、"入力"を動かしている途中で 上記のマクロをとめるにはどうしたらよいのでしょう? ご教授ください。

  • VBAのタイマー

    こんにちは VBAで、一日に一回起動するマクロを作ろうと思っています。 Sub timer() Dim settime As Variant Dim waittime As Variant settime = TimeValue("00:35:00") '指定時刻 waittime = TimeValue("00:01:00") settime = settime + waittime '指定時刻待ち時間 Application.OnTime TimeValue(settime), "sub" End Sub な感じなのですが、これだと一度起動すると二日目以降は動作しなくなります。 毎日起動するにはどうしたら良いものでしょうか

  • 指定した時刻になるとセルに色がつくようにしたい

    初心者です。エクセルのVBAで設定した時刻になったらセルに色がつくようにしたいです。 例えば、17:00時にA1セル、18:00にA2セルに色を自動でつくようにしたいと思っています。 OnTimeを使ったらよいと思っていろいろ試しましたが、設定した時刻になってもなにも起こりません。 標準モジュールに以下の内容を記述して、パソコンの時計を変更して確認しています。 できたらクリックしないでファイルオープンしてなにもせずに設定時刻に実行されるようにしたいです。 最初の3秒でB1に現在の時間を取得。 セルA1とA2をクリアしてから設定時間に色をつけるようにしたつもりです。 下記が記述内容です。 Sub 指定時間にマクロを開始() Dim stime As Date Range("A1") = "" Range("A2") = "" Range("B1").Select stime = Now + TimeValue("00:00:03") Application.OnTime TimeValue(stime), "マクロ実行内容", TimeValue("00:05:00") End Sub Sub 時刻の設定1() Application.OnTime EarliestTime:=TimeValue("17:00:00"), Procedure:="Test" End Sub Sub Procedure() Range("A1").Interior.ColorIndex = 8 End Sub Sub 時刻の設定2() Application.OnTime EarliestTime:=TimeValue("18:00:00"), Procedure:="Test" End Sub Sub Procedure2() Range("A2").Interior.ColorIndex = 9 End Sub 実行マクロは有効にしています。 ご教授よろしくお願いします。

  • Application.OnTime Nowの変数

    他のプロシージャに1秒後に変数を渡すテストをしました。 Sub test01() Dim ws As Worksheet Set ws = ActiveSheet Application.Wait Now + TimeValue("0:00:01") Call AAA(ws) 'ただしく渡される End Sub Sub test02() Dim ws As Worksheet Set ws = ActiveSheet Application.OnTime Now + TimeValue("00:00:01"), "AAA(" & ws & ")" 'エラー End Sub Sub AAA(ByVal ws As Worksheet) MsgBox ws.Name End Sub Application.OnTime を使ったほうがエラーになるのはなぜでしょうか? どうやれば正しく渡せるうのでしょうか?

  • Excel VBAでセルに書いた時刻を取得したいのに・・・

    ExcelのVBAで、OnTimeを使い、 定時に印刷させるプログラムを組んでいます。 今までOnTimeの時刻設定に直接時刻を入れ込んでいたのですが、 ワークシートに登録した時刻を使うようにしたいと思い、 次のようにしたのですが、 Setのところの変数名で「オブジェクトが必要です」エラーが出ます。 ・・・何が悪いのでしょうか? Dim routinetime1 As String Dim routinetime2 As String Dim routinetime3 As String Set routinetime1 = Range("A1").Value Set routinetime2 = Range("B2").Value Set routinetime3 = Range("C3").Value Application.OnTime TimeValue(routinetime1), "印刷プロシージャ" Application.OnTime TimeValue(routinetime2), "印刷プロシージャ" Application.OnTime TimeValue(routinetime3), "印刷プロシージャ" よろしくお願いいたします。

  • セルの現在時刻表示の更新間隔をセルから入力したい

    セルの現在時刻表示の更新間隔をセルから入力したい マクロは以下を使用してますが更新間隔変更のtimevalue(c3)とするとエラー13が出ます。 どなたかお教え下さい。 ******************************************** Sub Auto_Open() Dim TargetTime, WaitTime TargetTime = Now + TimeValue("00:00:01") WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub Macro1() Dim TargetTime, WaitTime Calculate TargetTime = Now + TimeValue("00:00:01") 'ココをセルにするとエラー13がでる WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub auto_close() Dim i As Integer, TargetTime On Error Resume Next For i = 1 To 10 TargetTime = Now + TimeValue("00:00:" & Application.Text(i, "00")) Application.OnTime TargetTime, "Macro1", , False Next i End Sub **********************************************

  • On Timeメソッド?で更新されません。

    On Timeメソッド?で更新されません。 現在Web上にあった例を参考に 下記の様にホワイトボード解析シートのA1セルに 20秒ごとに現在時刻を表示させています。 これを応用して、違うシートに 17:00に天気というマクロを実行するよう 作成したのですが上手くいきませんでした。 Sub Auto_Open()とSub auto_close()のtargetTimeを targetTime = TimeValue("17:00") Macro7を天気 としたのですが、なぜ更新されなかったか分かる方がいらっしゃいましたら ご教授下さい。 Sub Auto_Open() Dim TargetTime, WaitTime TargetTime = Now + TimeValue("00:00:01") WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro7", WaitTime End Sub Sub Macro7() On Error Resume Next Worksheets("ホワイトボード解析").Range("A1").Calculate Application.OnTime Now + TimeValue("00:00:20"), "Macro7", TimeValue("00:00:10") '↑TimeValueの最初の方をへんこうする事で時間が変わる End Sub Sub auto_close() Dim i As Integer, TargetTime On Error Resume Next For i = 1 To 10 TargetTime = Now + TimeValue("00:00:" & Application.Text(i, "00")) Application.OnTime TargetTime, "Macro7", , False Next i End Sub

  • 「一定の時間間隔で5秒毎にマクロを実行する」

    http://okwave.jp/qa/q8690800.html の続きです。ご指摘のとおりコードを改変しました。 startはばっちり動いたのですが、stopが命令を受け付けてくれなくて 「Ontimeメソッドは失敗しました。Applicationオブジェクト」とでます。 何か原因があるのでしょうか。ご指摘よろしくお願いします。 Sub t_start() Call last20txt End Sub Sub t_stop() Application.OnTime earliesttime:=tt, procedure:="last20txt", Schedule:=False End Sub ------------------------------------------- 下記Call先です。 Sub last20txt() Dim Srg As Range Dim kensu As Long Set Srg = Cells(1, 1) Workbooks.Open ("C:***.csv") kensu = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(kensu - 19, 1), Cells(kensu, 4)).Copy Srg ActiveWorkbook.Close Dim wt As Date Dim tt As Date tn = Now() tt = tn + TimeValue("00:00:05") '5秒後 wt = TimeValue("00:00:02") 'インターバル2秒 Application.OnTime tt, "last20txt", wt End Sub

  • 「一定の時間間隔で5秒毎にMacro1を実行する」

    「一定の時間間隔で5秒毎にMacro1を実行する」 一応startマクロ、stopマクロは作成してみたのですが、 下記stopコマンド実行しても止まらなかったような気がします。 ここから改変するとしたらどうですか? Public timestop As Boolean Sub test() Dim tt As Double Dim wt As Double tt = Now + TimeValue("00:00:05") '5秒後 wt = TimeValue("00:00:02") 'インターバル2秒 Application.OnTime tt, "Macro1", wt If (timestop = False) Then Time = Timer Application.OnTime earliesttime:=(Now + TimeValue("00:00:01")), procedure:="test" End If End Sub ---------------------------------------- ここからstart,stopマクロ Sub t_start() timestop = False Call test End Sub Sub t_stop() timestop = True End Sub

専門家に質問してみよう