Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8207 / 13646 ツリー ←次へ | 前へ→

【34618】For Each で対象がない場合の処理 koto 06/2/8(水) 11:44 質問[未読]
【34619】Re:For Each で対象がない場合の処理 Blue 06/2/8(水) 11:48 発言[未読]
【34624】Re:For Each で対象がない場合の処理 Kein 06/2/8(水) 13:02 回答[未読]

【34618】For Each で対象がない場合の処理
質問  koto  - 06/2/8(水) 11:44 -

引用なし
パスワード
   For Each WB In Application.Workbooks
    If WB.Name Like "TEST_*" Then
      Set ws_g = Workbooks(WB.Name).Sheets(1)
      Exit For
    End If
Next

これは、数個のファイルを開いておき、「TEST」で始まるファイル名を
探す為にこのように書きました
でも、もしこのファイルがない場合はどのように書いたらいいのでしょうか?
if WB=false then
とかいたらダメでした。

【34619】Re:For Each で対象がない場合の処理
発言  Blue  - 06/2/8(水) 11:48 -

引用なし
パスワード
   ws_gが設定されないときを判定するのならば、

If ws_g Is Nothing Then
  ' 該当ファイルがない
End If

でいけます。

【34624】Re:For Each で対象がない場合の処理
回答  Kein  - 06/2/8(水) 13:02 -

引用なし
パスワード
   フラグを使うという方法があります。

Dim WB As Workbook
Dim Flg As Boolean

For Each WB In Workbooks
  If Left$(WB.Name, 5) = "TEST_" Then
   Set ws_g = WB.Worksheets(1)
   Flg = True: Exit For
  End If
Next
If Flg = False Then
  MsgBox "該当するブックが開かれていません", 48
  Exit Sub
End If

などとします。

8207 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free