• ベストアンサー

リストボックスに特定の複数のシート名を表示しないようにする

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

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.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の除外シートの文字列は、 必ず、シート名+●、にしておかねばならない。 ●は、そのままでもいいし、全角スペース、半角スペースなどでも可。   以上。

aitaine
質問者

お礼

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

その他の回答 (3)

回答No.3

失礼しました。 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 でした。 ではでは。(汗)

aitaine
質問者

補足

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

回答No.2

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)
回答No.1

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

関連するQ&A