• 締切済み

WSH:任意のキーを押してDo While Loopから抜ける方法はありますか。

WSHのスクリプトでDo While Loopをまわしているときに任意のキーを押すとループから抜け出すようなプログラムは可能ですか。

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

'多分無いのでは・・・ 'ヘボな案ですが、一回のループに時間が掛かるなら、PopUpが使えるかも? '下のサンプルのように自動的に消えてしまいますので、 'PopUpウィンドウが出たときに分岐できるかも? '※但しこのPopUp はかなり当てになりません '時間が正確でない。 'タスクバーには現れるがポップアップして最前面に出てこない。 'ということで、そちらの状況が分かりませんけれども 'Loop を抜け出す以外の方法を考えた方が良さそうな気がします。 Set objShell = CreateObject("Wscript.Shell") Do Until i > 3   '実際の何かの処理   wscript.sleep 3000      Res = objShell.Popup("終了しますか", 3, "三秒以内に答えてね",1)   i=i+1   Select Case Res    case 1          dmy = objShell.Popup("終了します", 1, "一秒待ってね")        Exit Do    case 2    dmy = objShell.Popup("またね", 1, "一秒待ってね")    case -1    dmy = objShell.Popup("次回はお返事を", 1, "一秒待ってね")   End Select Loop if not i > 3 then   msgbox "一抜け" else   msgbox "三回を超えました" end if

phy0
質問者

お礼

ありがとうございます。参考にさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Do Loopをキーボードで抜けるには

    エクセルVBAでDo Loopを使って繰り返し表示するプログラムを組んでいます。 このループを終わらせるにはEscを押せば強制終了しましたがキーボードの任意のキーで抜けるもしくは終了させる方法を教えてください。 エクセルのバージョンは「2007」です。

  • Do..Loopステートメントの使い方について

    現在、入門書を画面で確認しながら ExcelVBAの勉強をしています。 Do...Loopで躓いてしまいました。 Do...Loopステートメントの種類は 条件を満たすまでループするもの Do Until...Loop(ループの前で条件判断) Do...Loop Until(ループの後で条件判断) 条件を満たす間はループするもの Do While...Loop(ループの前で条件判断) Do...Loop While(ループの後で条件判断) とあって、 例えば、A1からA7まで文字が入力されていて 空白のセルになるまで太文字にするとしたら、 ループの前に条件判断していると A1が空白だと処理はされず ループの後で条件判断すると A1が空白でも処理はされる とありました。 とすると、 条件判断はループ後にした方が良いと言う事なのでしょうか。 (空白でも処理してくれるので) 自分が処理したいものが ループ「後」にするのか又は ループ「前」にするのか どのように判断すれば良いのかと言うことと、 また、 条件を満たすUntil(まで)とWhile(間) どちらを使用すれば良いのかの判断方法もわかりません。 超初心者の質問内容で申し訳ありません。 VBAって面白いなぁと思い始めたところで なんとか理解したいので 教えていただけると大変助かります。 よろしくお願いします。

  • Do whileでExitせず、ループの最初に戻る方法

    よろしくお願いします。 環境 Excel 2003 Do whileのループ内で、Exitのような記述方法で、ループの最初に戻る方法はありますでしょうか? イメージは以下のような形です。 Sub hoge() r = 0 rr = 5 Do While r < 6 'ここに戻る If r = 3 Then 'ここでDo while の最初に戻る End If Loop End Sub よろしくお願いいたします。

  • do while

    do whileの文で do{… }while(c!=1 && c!=2 && c!=3); つまり1,2,3以外の数字を入力した場合はループするようにしました。…は無限ループしないようにしています。実際1,2,3以外の数字を入力しても無限ループしません。しかし、数字以外の文字を入れてしまうと、無限ループします。%dがいけないのでしょうか?初心者ですので分かりやすくよろしくお願いします。多分これだけじゃ情報不足だと思うので、足りない情報があれば言ってください。すぐに書き込みます。

  • Do~Loopステートメント

    Do~Loopステートメントで使わな方が良いステートメントとは? Do~Loopステートメントで「古いから使わない方がよい」、と言われたことがあるのですが どれの事だか忘れてしまいました。 Sub test() セルのA1~A10に1~10を入力する i = 1 Do While i < 11 Worksheets("Sheet1").Cells(i, 1).Value = i i = i + 1 Loop End Sub これは一般的だから使ってもよいと思います。 Sub test() セルのA1~A10に1~10を入力する i = 1 Do Until i = 11 Worksheets("Sheet1").Cells(i, 1).Value = i i = i + 1 Loop End Sub これもよく見かけます。 Do While,Do Until以外にもloopステートメントってありますか? あと使わない方が良いステートメント、私の勘違いでなければ教えてください。

  • VBA DO~LOOPのネスト方法について

    エクセルマクロの構文でDO~LOOPのネストを行った際に、EXIT DOで飛び出した後のLOOP条件が無効になるようです。どなたかご教授願います。 Sub TEST() y = 1 Do Do If y = 2 Then Exit Do End If y = y + 1 Loop Loop While y = 3 End Sub

  • Do While Loop中の数式でRange関数

    質問です。 OS:Windows XP Excel:2007 3列×20行にわたって数値が入力してあります。 やりたいことは次のとおりです。 ・行数があるのでDo While Loopを使用して計算したい。 問題点は次のとおりです。 現状は、Range関数の引数で単一セルを指定する形式の計算式を書いているのですが、 whileでループさせて各行に対して同じ処理をさせるためには、Range関数に渡す引数で セル指定をどのように書けばよいでしょうか。 ちなみに現状の計算式は以下のように書いています。このコードをwhileで各行に対して ループさせたいと考えています。 num = (Range("E1").Value * Range("I1").Value) + (Range("H1").Value * (Range("I1").Value / (Range("I1").Value + Range("J1").Value + Range("K1").Value)))

  • perlのdo-while文で抜け出せない 

    perlのwhile,do-while,last文に関する質問です。 1) code1のようなプログラムを作ったのですが   eでdo_whileを抜け出すことができませんがなぜでしょうか。 ---code1(eで抜け出せない)(NG)--- my $sum=0; do{  my $a=<STDIN>;  chomp($a);  $sum=$sum+$a; }while($a ne 'e'); print $sum; -------------------------------- 2) 抜け出す方法をいろいろ試していたら   while(1)にしてlastで抜けるようにすると   code2ではeで抜け出すことができるように   なりましたが、   do~while(1)にしたcode3では、  「Can't "last" outside a loop block at …」C   というエラーが発生します。   code2とcode3はwhileがdo~whileになって   条件を見る位置がループの始めか終わりの   違いだけなのに、なぜ、code2ではOKで、   code3ではエラーになるのでしょうか。 ---code2(eで抜け出せる)(OK)----- my $sum=0; while(1) {  my $a=<STDIN>;  chomp($a);  last if ($a eq 'e');  $sum=$sum+$a; }; print $sum; --------------------------------- ---code3(エラーになる)(NG)----- my $sum=0; do{  my $a=<STDIN>;  chomp($a);  last if ($a eq 'e');  $sum=$sum+$a; }while(1); print $sum; --------------------------------- よろしくお願いします。 Windows7 , ActivePerl(v5.16.3)

    • ベストアンサー
    • Perl
  • "DO LOOP"

    テキストボックスに数値を入れると Do Loopでその数値の整数部分が何桁かを計算して、 ラベルに表示させるプログラムを作りたいです。 その時の、終了条件がわかりません。 (出来れば繰り返し実行されるステートメントお願いします。) 教えてください。お願いします。

  • DO~LOOP でのLOOPの抜け方

    コマンドボタンを押して(スタートボタン)DO~LOOPで実行しているときにストップコマンドボタンを押してストップさせるときの LOOPの抜け方がわかりません。すみませんがよろしくお願いします。