• 締切済み

頭文字にR、E、B、G、Pのついたシート名をリストボックスに表示させないようにするには

以下は「E職名順名簿 E職番順名簿 」という名の2つのシートを除くシート名を リストボックスのリストに表示するマクロです。 これを一部変更して、頭文字にR E B G Pのついたシートを表示させない ようにするには、どのように記述したらよいでしょうか? ((1)図をクリックすると、全シートのうち特定の頭文字をもつシートのみ表示させたい。  (2)後から追加するシートにマクロを変更することなく対応させたい。) Sub image_本図1250344412_Click() Dim i As Integer UserForm6.Show vbModeless '「E職番順名簿」と「E職員名順名簿」を除く全てシートを表示 Const EXCEPT_NAME = "E職名順名簿● E職番順名簿● " For i = 1 To Worksheets.Count If InStr(EXCEPT_NAME, Worksheets(i).Name & "●") = 0 Then UserForm6.ListBox1.AddItem Worksheets(i).Name End If Next i End Sub

みんなの回答

  • MoguraSE
  • ベストアンサー率64% (81/126)
回答No.2

No.1の者です。 失礼しました。完全に間違ってますね(汗 条件判定式のAndのところを全てOrにしていただけば動作すると思います。 動作チェックもしておらず申し訳ありませんでした。 >単純に頭文字Rのシートだけ表示させる こちらのコードで可能です。 今度は手持ちのExcel 2007で動作確認済みです (^^; Dim i As Integer For i = 1 To Worksheets.Count If Worksheets(i).Name Like "R*" Then UserForm6.ListBox1.AddItem Worksheets(i).Name End If Next i

pureko99
質問者

お礼

何度もお手数をおかけしました。貴重なお時間を割いていただいて誠にありがとうございます。 両方ともに問題なく動作しました。 今後は、少しでも自力で解決できるようにはげみます。

  • MoguraSE
  • ベストアンサー率64% (81/126)
回答No.1

こんにちは。 Like演算子を使えば楽なのではないでしょうか。 Dim i As Integer For i = 1 To Worksheets.Count If Not (Worksheets(i).Name Like "R*" And _ Worksheets(i).Name Like "E*" And _ Worksheets(i).Name Like "B*" And _ Worksheets(i).Name Like "G*" And _ Worksheets(i).Name Like "P*" then UserForm6.ListBox1.AddItem Worksheets(i).Name End If Next i

pureko99
質問者

補足

早速 ご回答ありがとうございます。 ただ、残念ながらこのマクロ文で動作させたところ 頭文字のないものも、あるものも全てのリストが表示されました。 結論が同じなら、アプローチの方法を変更して、今回は「単純に頭文字Rのシートだけ表示させる」方法をお知らせください。勝手をいって申し訳ありません。お手数をおかけします、

関連するQ&A

専門家に質問してみよう