このようなコードを使いたいのですが・・・
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/vbs …
clip
ただどういうう風に書き直したらいいか分からなく困っています。
どなたか解説いただけないでしょうか?
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の代わり』とコメントを書いておく方が、まだ読みやすい。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) 開いているフォルダを全て閉じる、マクロを教えて下さい 3 2022/08/28 08:42
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
EXCEL VBA マクロ 実行する度に...
-
メルカリのメルカードで買い物...
-
switch の範囲指定
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
Do~Loopした回数をカウントしたい
-
C言語 b += a ? 1 : 0; の意味
-
VBの質問#if 0 then ってどう...
-
UMLでの例外処理
-
実時間処理ってなんですか?
-
インタラクティブの反対語は?
-
リョウ・・・量?料?
-
findは動くがfindnextがマクロ...
-
VBAでセルに値が入力されるまで...
-
VB.NET Excelを読み込んでDataT...
-
Select Case文でこのようなこと...
-
月度は何て読みますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
月度は何て読みますか?
-
switch の範囲指定
-
VBの質問#if 0 then ってどう...
-
セルの値が0はクリアするマクロ
-
VB.NET Excelを読み込んでDataT...
-
Do~Loopした回数をカウントしたい
-
Loadイベント中にほかのイベン...
-
Select Case文でこのようなこと...
-
findは動くがfindnextがマクロ...
-
緊急です。 知り合いから50kgの...
-
リョウ・・・量?料?
-
理不尽、行き場のないイライラ...
おすすめ情報