- ベストアンサー
リストボックスに特定の複数のシート名を表示しないようにする
vista sp1 ExcelXPでマクロ作成中の超初心者です。 現在、リストボックスにすべてのシート名が表示されます。 Private Sub UserForm_Initialize() Workbooks("請求.xls").Activate Dim i As Integer For i = 1 To Worksheets.Count 会社リスト.AddItem Worksheets(i).Name Next i With 会社選択 .StartUpPosition = 0 '初期表示位置を表す値を指定しない .Top = 200 '上端からの距離を設定する .Left = 570 '左端 〃 .Show '表示する End With End Sub これを、' Const EXCEPT_NAME = "印刷1 印刷2 データ1 データ2 "を使うなどして リストボックスに除外シートのみ、表示しないようにしたいのですが、どのようにしたらよろしいでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Instr関数を使ってシート名がEXCEPT_NAMEの中にあるかチェックする。 '------------------------------------------- Dim i As Integer Const EXCEPT_NAME = "印刷1●印刷2●データ1●データ2●" For i = 1 To Worksheets.Count If InStr(EXCEPT_NAME, Worksheets(i).Name & "●") = 0 Then 会社リスト.AddItem Worksheets(i).Name End If Next i '------------------------------------------------- (注意点) Instr関数の性質上、変数EXCEPT_NAMEの除外シートの文字列は、 必ず、シート名+●、にしておかねばならない。 ●は、そのままでもいいし、全角スペース、半角スペースなどでも可。 以上。
その他の回答 (3)
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
失礼しました。 Const EXCEPT_NAME = "印刷1 印刷2 データ1 データ2 "でしたね。 For i = 1 To Worksheets.Count if Worksheets(i).Name<>"印刷1" and _ Worksheets(i).Name<>"印刷2" and _ Worksheets(i).Name<>"データ1" and _ Worksheets(i).Name<>"データ2" then 会社リスト.AddItem Worksheets(i).Name end if Next i でした。 ではでは。(汗)
補足
今ためしたら、なぜか「インデックスが有効範囲にありません。」のエラー発生。?・・・も一度調べてみます。
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
No1さんと重複しますが、 "印刷1 印刷2 データ1 データ2"以外を除外でいいですか? For i = 1 To Worksheets.Count if Worksheets(i).Name="印刷1" or _ Worksheets(i).Name="印刷2" or _ Worksheets(i).Name="データ1" or _ Worksheets(i).Name="データ2" then 会社リスト.AddItem Worksheets(i).Name end if Next i としましょう。 ではでは
- keirika
- ベストアンサー率42% (279/658)
リストボックスに追加する際にIF文で除外シートを省いてみては どうでしょう。
お礼
ありがとうございました。一発で完璧にできました。