• ベストアンサー

for loop の処理が途中でプログラムを終えてもつづいてしまうのをやめさせるには?

お世話になります。 for a = 1 to 10000 ~~処理~~ now = Timy While Timy < now + 2 DoEvents Wend loop ~~ とコーディングしてるのですが 途中でプログラムを終わらしても コンピューターの方でプログラムが続いてるみたいなのですが終わらすにはどうすればよいでしょうか?

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

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.5

#3です。 コマンドボタンを1つつくって Dim a As Single Private Sub Command1_Click() For a = 1 To 1000000 If Command1 = True Then Exit For Next a Command1.Caption = "終了" Unload Me End Sub もう少したりないかな。

mokukun
質問者

お礼

わざわざありがとうございます。 いろいろお世話になりました。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>エクスプローラーの右上のバツボタンを押すと >for loopが終わるようにしたいんです。 多分、忙しくてなかなか終われないだけだと思います。 >バツボタンが押された とかは、普通イベントで取得するのだと思いますが、 プログラム自体が、忙しすぎるとそれができません。 ×ボタンが押された時、は終了手続きが自動で行われる(はず)なので、特別になにかをする(その上で何かの終了手続きをするのでなく単に終了するのが目的なら)必要はありません。 DoEventsもあることだし、その内終了してくれると思います。

mokukun
質問者

お礼

あぁ、そうなんですか。 以前、単に×ボタンをおしただけだと for loopが終わらないとおしえてもらったのですが・・・ どうやら勘違いだったようですね。 ありがとうございます。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.3

1.for nextのとき Exit For 2.Do Loop のとき Exit Do たとえば For a=1 to 10000 if a=1000 then Exit For Next a これで a=1000のときループを終了します。

mokukun
質問者

補足

ありがとうございます。 エクスプローラーの右上のバツボタンを押すと for loopが終わるようにしたいんです。 For a=1 to 10000 if バツボタンが押された then Exit For Next a みたいな感じにしたいんですけど バツボタンを押されたってどう書けばいいんでしょう?

回答No.2

#1です。 うぬ? Breakは、キーの事です。Ctrlキー+Pauseキーの事を言ったのですが。うまく伝わらなかった様で。 デバッグ途中で、このCtrlキー+Pauseキーを押すと、強制終了するので。 そして、本題。 と、いう事は、先のロジックは、For~Nextになってるのですね。 で、このロジックから抜けたいのですか?それなら、 Exit For を、ループするロジック内に、条件文などと一緒に書いてあげれば、Forループを脱出しますよね。 それとも、While文の所だけ抜け出れば良いのかしら。 それでしたら、While~Wendを、Do While~Loopに書き換えて、条件文でExit Doすれば、抜けますよね。 そういう事でなく?

mokukun
質問者

補足

あぁ、なるほど! キーだったんですね。 気づきませんでした・・汗汗

回答No.1

1. For文に対応する、Nextステートメントはどこにありますか? 2. Loopステートメントに対応する、Do文はどこにありますか? 何か、根本的に間違ってるような。 因みに、プログラムの繰り返しを強制終了するには、Break(Ctrl+Pause)で止まります。

mokukun
質問者

補足

loop じゃなくて Nextでした。 Private Sub Command2_Click() Break (Ctrl + Pause) End Sub とくみこんでみたのですが subまたはfunctionが定義されていませんとでて エラーがでてしまうのですが どうくみこめばよろしいでしょうか。

関連するQ&A

  • オブジェクト変数または With ブロック変数が設定されていません。

    下記の様に組みましたが、下記の★印の所で止まる様な事があります。 毎回止まるわけではないのですが、止まる時に「オブジェクト変数または With ブロック変数が設定されていません。」と表示されますが、 原因は何か?どの様にすればいいのか?など詳しく教えてください。 よろしくお願いします。 Sub test() Dim objIE As Object Dim strCOMMENT As String Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://" While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'データをセットする 'htmlドキュメント フォーム(0番目) アイテムに転記(代入)する objIE.Document.forms(0).Item("username").Value = "11111" objIE.Document.forms(0).Item("password").Value = "11111" While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.all.subm.Click While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop For Each link In objIE.Document.Links If link.href = "http://" Then link.Click End If Next While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'タイトル・コメントの読み込み strtitle = Sheets("sheet1").Range("k7") strCOMMENT = Sheets("sheet1").Range("k9") Application.WindowState = xlMinimized While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.forms(0).Item("title").Value = strtitle objIE.Document.forms(0).Item("comment").Value = strCOMMENT While objIE.readystate <> 4 While objIE.busy = True DoEvents ' Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.all.submit.Click While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'フォーム(0番目)を .Submit(確認) する objIE.Document.forms(0).getElementsByTagName("input")(11).Click '←★この部分で止まる時があります。 While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop For Each link In objIE.Document.Links If link.href = "http://" Then link.Click End If Next While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 7, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Quit '.Quitで閉じる End Sub

  • タイムストッププログラム

    お世話になります。 コマンドボタン2をおしても タイムがとまらないんですが・・・ なぜでしょうか? Private Sub Command1_Click() Dim k As Integer Dim NOW As Long For k = 1 To 1000 Text1.Text = k NOW = Timer While Timer < NOW + 1 '1秒間待機する DoEvents Wend If Command2.Value = True Then Exit For Next k End Sub

  • loopを抜け出すには Exit Forですが

    loopを抜け出すには Exit Forですが loopの次のサイクルに行くには? For i=1 to 10 . Exit For . . Next i 今、i=5を実行中とします 以下の処理をスキップして i=6に行くには、なにかありませんか 普通はIf文で処理するとおもいますが

  • Java Generics の Enhhanced for-loop におけるメリット

    私自身JAVAに明るくないのですが、なぜか更に分かっていない人にプレゼンをすることになってしまいました。プレゼン内容は「JAVAプログラム・コーディングでGenericsを使用するメリット、デメリット」で、Enhhanced for-loop のケースということで……。ネットで色々調べて、メリットとしては「Genericsを使いこなすと、Java言語プログラム・コードを大幅に簡略化できる」ということは分かりましたが、その他のメリットやデメリットなどがよく分かりません。(loopが始まると途中で止められない?というようなことが分かったような分からないような) どなたか、素人でも分かるように単純明快に解説して下さい or 解説しているサイトを教えて下さい! どうかよろしくお願いします!

    • ベストアンサー
    • Java
  • LOOP処理について

    条件に当てはまる値を10件SELECTし、 INSERTしたいのですが試せる環境がなく確認できない状態です。 もしテーブルを全件みて該当データがない場合も処理終了と したいのですが下記のような書き方でよいのでしょうか? どなたかご助言いただけないでしょうか?お願いします。 BEGIN WHILE (10=i) LOOP SELECT A INTO AA FROM TBL_A WHERE A = "xxx" INSERT INTO TBL_B (A_ID)VALUES(AA) EXIT WHEN (10=i) ; END LOOP; DBMS_OUTPUT.PUT_LINE('呼び出されます'); END;

  • Do whileとFor文の脱出処理について

    はじめまして。 VBについて素朴な質問なのですが For…Nextから抜けるにはExit for を使いDo…Loopから抜けるにはExit Doを使用しますが以下の場合はFor文の中でExit doを使用するのは可能なのでしょうか? Do while(条件) for i=1 to 12 if 条件 then exit do end if 処理1 next i 処理2 loop 本来ならfor文の中ではExit forを使用しますがfor文はDo while文 の中に含まれていますのでExit doでも出れると思ったのですがそうではないのでしょうか?ご回答よろしくお願いします。

  • プログラムを一定時間とめるコードの際に24時をまたぐととまらないようにするには?

    お世話になります。 以下のコードだと24時をまたぐ際に プログラム自体が停止してしまうんでうバグがあるんですよね。ちょっと解決方法がおもいつかないので 詳しい方教えて下さい。よろしくお願いします。 st = Timer   Do While Timer - st < 3     DoEvents   Loop

  • vb2005でプログラムをとめるコードは?

    お世話になります。 vb2005でプログラムに5秒間、時間をとめようとおもいます。 これだとTimerにエラーがでてしまいます。 ('Timer' は型です。有効な式ではありません。) どこをどうなおせばエラーがでなくなるのでしょうか? 教えてください。お願いします。 Dim sngSt As Single sngSt = Timer Do While Timer - sngSt < 5 DoEvents() Loop

  • VB2005 Do Loopについて

    VB2005 でDo Loopを使用していますが、このDo Loop内の処理をしている時にイベント(例えばボタンをクリック)が発生した場合、その処理をしたいのですがどうすれば良いでしょうか? VB6の時は、DoEventsを使用していましたが、VB2005でも使用できるのでしょうか? ご存知の方がいらっしゃいましたら、教えて頂きたいのですが。 よろしくお願いします。

  • プログラムの処理速度について

    プログラムの繰り返し文(WhileやFor)の処理速度 は、マシンの何で決まるのでしょうか? WinXPでは1秒間に100回処理したにもかかわらず Win7では1秒間に1回しか処理せず、とても遅くて 困っています。 何か情報ある方、回答よろしくお願いします。