プロが教える店舗&オフィスのセキュリティ対策術

以下は「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

A 回答 (2件)

こんにちは。



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

この回答への補足

早速 ご回答ありがとうございます。
ただ、残念ながらこのマクロ文で動作させたところ
頭文字のないものも、あるものも全てのリストが表示されました。

結論が同じなら、アプローチの方法を変更して、今回は「単純に頭文字Rのシートだけ表示させる」方法をお知らせください。勝手をいって申し訳ありません。お手数をおかけします、

補足日時:2009/08/11 21:43
    • good
    • 0

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/08/12 18:05

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