プロが教えるわが家の防犯対策術!

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 "を使うなどして
リストボックスに除外シートのみ、表示しないようにしたいのですが、どのようにしたらよろしいでしょうか。

A 回答 (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の除外シートの文字列は、
必ず、シート名+●、にしておかねばならない。

●は、そのままでもいいし、全角スペース、半角スペースなどでも可。
 
以上。
    • good
    • 0
この回答へのお礼

ありがとうございました。一発で完璧にできました。

お礼日時:2008/08/03 00:52

失礼しました。


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

でした。
ではでは。(汗)

この回答への補足

今ためしたら、なぜか「インデックスが有効範囲にありません。」のエラー発生。?・・・も一度調べてみます。

補足日時:2008/08/02 22:37
    • good
    • 0

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

としましょう。
ではでは
    • good
    • 0

リストボックスに追加する際にIF文で除外シートを省いてみては


どうでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!