• ベストアンサー

VBで擬似Continueを行いたいのですがよくわかりません。

このようなコードを使いたいのですが・・・ Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows If TypeName(objWindow.Document) <> "HTMLDocument" Then Continue End If これに対応したやり方というのを下記サイトで見つけました。 http://mga.cocolog-nifty.com/pc_info/2006/11/vbscript_tips1__7a8f.html clip ただどういうう風に書き直したらいいか分からなく困っています。 どなたか解説いただけないでしょうか?

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

わざわざ、VBにはないContinueを疑似再現してコードを読みにくくしなくても、下のように書いたら良いと思うんですが。 Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows   If TypeName(objWindow.Document) = "HTMLDocument" Then     やりたい処理   End If Next もしくは For Each objWindow In objShell.Windows   Select Case TypeName(objWindow.Document)     Case "HTMLDocument"       やりたい処理その1     Case "HogeHoge"       やりたい処理その2     Case "FugaFuga"       やりたい処理その3   End Select Next 個人的には、C言語などでもContinueは使わない派なので(Breakは多用します)。 行が長く、あるいはネストが深くなるのがイヤなら、サブルーチンとして外出しして、Exit Subですかね。 リンク先のコードは、頭の体操としては面白いし、よく考えられている。 実際に使用するなら、Goto [ラベル]を使った上で目立つように『Continueの代わり』とコメントを書いておく方が、まだ読みやすい。

その他の回答 (1)

  • ainax
  • ベストアンサー率45% (5/11)
回答No.1

実行確認していないので間違ってたらすみません。 Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows Do If TypeName(objWindow.Document) <> "HTMLDocument" Then Exit Do 'Continue End If ~~何かの処理~~ Loop Until True Next たぶんこうゆうことじゃないかと。 Exit Do(もしくは For)をContinueの代わりにしたいけど、 Exit Do(もしくは For)に対応するDo Loop(For文)が何回も繰り返される必要はないので、 1回実行するだけにしているのがミソですね。 紹介サイト先では、「Until 1」になっているのですが、 VBScriptでは1 = Trueですが、VB.Netでは-1 = Trueだったりするので、 Trueと書いといた方がいいかもしれません。

関連するQ&A

専門家に質問してみよう