Excel VBA質問箱 IV

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

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


7351 / 13644 ツリー ←次へ | 前へ→

【39656】ブックの中に指定のシート名が存在するかどうか りんりん 06/6/28(水) 13:39 質問[未読]
【39657】Re:ブックの中に指定のシート名が存在する... ぱっせんじゃー 06/6/28(水) 13:54 発言[未読]
【39659】Re:ブックの中に指定のシート名が存在する... ぱっせんじゃー 06/6/28(水) 13:57 発言[未読]
【39658】Re:ブックの中に指定のシート名が存在する... Kein 06/6/28(水) 13:54 回答[未読]
【39661】Re:ブックの中に指定のシート名が存在する... りんりん 06/6/28(水) 15:47 お礼[未読]

【39656】ブックの中に指定のシート名が存在するか...
質問  りんりん  - 06/6/28(水) 13:39 -

引用なし
パスワード
   こんにちは。

あるブックの中に不特定多数のシートが存在していて、
クリックイベントで、ボタンを押すとブックの中の
シートに「受注」と「完成品棚卸」という名前のシートが
両方存在したら、「macro1」という名前のマクロを
実行し、どちらも存在しない、あるいはどちらか片方
しか存在しない場合は、マクロを実行せずに
「受注シートまたは完成品棚卸シートが存在しません」
というメッセージを出して終了する
というコードを書きたいのですが、どのようにしたら
よいのかわかりません。

説明がわかりにくかったらすいません。 
どうかアドバイスをお願いします。

【39657】Re:ブックの中に指定のシート名が存在す...
発言  ぱっせんじゃー  - 06/6/28(水) 13:54 -

引用なし
パスワード
   WorkSheets.Count
でシート数を取得

For 〜
で全シートをループ

シート名の取得は、
WorkSheets(i).Name
のようにして取得

後は
シート名が「受注」だったら変数をカウントアップ
シート名が「完成品棚卸」だったら変数をカウントアップ

で変数が、
0だったらいづれのシートも存在しない、
1だったらいづれかのシートしか存在しない
2だったら両方存在する
ということで条件分岐させてはいかがでしょう?

【39658】Re:ブックの中に指定のシート名が存在す...
回答  Kein  - 06/6/28(水) 13:54 -

引用なし
パスワード
   Private Sub CommandButton1_Click()
  Dim WS As Worksheet
  Dim Flg As Boolean, Flg2 As Boolean

  For Each WS In Worksheets
   If WS.Name = "受注" Then
     Flg = True
   ElseIf WS.Name = "完成品棚卸" Then
     Flg2 = True
   End If
  Next
  If Flg = True And Flg2 = True Then
   Call Macro1
  Else
   MsgBox "受注シートまたは完成品棚卸シートが存在しません", 48
  End If
End Sub

で、どうかな ?

【39659】Re:ブックの中に指定のシート名が存在す...
発言  ぱっせんじゃー  - 06/6/28(水) 13:57 -

引用なし
パスワード
   >で変数が、
>0だったらいづれのシートも存在しない、
>1だったらいづれかのシートしか存在しない
>2だったら両方存在する
>ということで条件分岐させてはいかがでしょう?


今回は、変数が2だったらmacro1実行、
2でなければMsgBox表示、という条件分岐
の方がいいですね。

【39661】Re:ブックの中に指定のシート名が存在す...
お礼  りんりん  - 06/6/28(水) 15:47 -

引用なし
パスワード
   みなさん回答ありがとうございます。
回答頂いたコードを参考に試してみたら
ちゃんとできました!
本当にありがとうございました!

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