• ベストアンサー

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

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

  • リストボックスからシートを選びアクティブにしたい

    Excel2007でマクロ作成の初心者です。 リストボックスで選択した、リスト項目のワークシートを表示したいのですが、 「インデックスが有効範囲にありません」というエラーがでます。 どうしたらよろしいでしょうか? よろしくお願いします。 ’-------------------------------- Private Sub 顧客リスト_Click() With 顧客リスト Worksheets(.list(.ListIndex - 0)).Activate’----ここでエラー発生します End With End Sub ----------------------------- Private Sub UserForm_Initialize() Workbooks("請求.xls").Activate Dim i As Integer Const EXCEPT_NAME = "経理●一覧●基本●" For i = 1 To Worksheets.Count If InStr(EXCEPT_NAME, Worksheets(i).Name & "●") = 0 Then 顧客リスト.AddItem i & " " & Worksheets(i).Name End If Next i End Sub ’---------------------------

  • リストボックスに番号と名前を表示したい。

    windows7 Excel2003でマクロ作成中の超初心者です。 現在以下のマクロにより、リストボックスに社員名を表示し、その名をクリック すると、その社員名のシートに飛ぶようになっています。  シート名は社員名になっていますが、最終のシートの5枚は他の目的に使用しています。 現在、リストボックスは、名前だけが順不動に並んでおり、ボックスから、選択するのに、見にくいのでちょっと時間がかかります。  それで名前の前に、シート番号等(任意の番号でも可)を表示して、見やすくして、容易に名前を選択するようにしたいのです。 よろしくお願いします。 Private Sub CommandButton1_Click() Unload 社員選択 End Sub ------------------------- Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To Worksheets.Count - 5 正社員リスト.AddItem Worksheets(i).Name Next i With 社員選択 .StartUpPosition = 0 '初期表示位置を表す値を指定しない .Top = 55 '上端からの距離を設定する .Left = 300 '左端    〃 ' .Show '表示する End With End Sub ----------------------------------------- Private Sub 正社員リスト_Click() Application.ScreenUpdating = False With 正社員リスト Worksheets(.list(.ListIndex)).Activate End With Unload 社員選択 End Sub

  • 複数選択可能なリストボックス

    Excel VBAの質問をさせてください。 シート(sheet1)のA列、セルA1から以下のデータがあるとします。 みかん りんご バナナ 苺 梨 バナナ バナナ みかん フォームのリストボックスで"みかん"と"バナナ"を選択した際、シート(sheet2)のセルA1にコピーしていきたいのですが機能しません。 単品、"みかん"だけを選択しても何もコピーされません。 どこがいけないでしょうか?? Private Sub UserForm_Initialize()   With ListBox1     .AddItem "みかん"     .AddItem "りんご"     .AddItem "バナナ"     .AddItem "苺"     .AddItem "梨" .MultiSelect = fmMultiSelectMulti   End With End Sub Private Sub CommandButton1_Click() Dim i As Long For i = 1 To 8 If Worksheets("Sheet1").Cells(i, "A").Value = Me.ListBox1.Value Then Worksheets("Sheet1").Cells(i, "A").Copy Worksheets("Sheet2").Cells(i, "A") End If End Sub

  • リストボックスから選択したシートを削除したい

    Excel2007でマクロ作成の初心者です。 リストボックスの選択項目のワークシートを削除したいのですが、 「インデックスが有効範囲にありません。」のエラーが発生し、 先に進めません。どうしたらよろしいでしょうか? ’--------------------- Private Sub 顧客削除_Click() Application.ScreenUpdating = False Unload Me Unload DS請求フォーム Dim i As Integer With 顧客リスト For i = 0 To .ListCount - 1 If .Selected(i) Then ' Worksheets(.list(.ListIndex)).Delete Worksheets(Split(.list(.ListIndex - 0), " ")(1)).Activate '←ここでエラー発生 ActiveSheet.Delete End If Next i End With MsgBox "選択の顧客を削除しました。" End Sub ’------------------------- Private Sub UserForm_Initialize() Workbooks("請求.xls").Activate Dim i As Integer Const EXCEPT_NAME = "経理●一覧●基本●" For i = 1 To Worksheets.Count If InStr(EXCEPT_NAME, Worksheets(i).Name & "●") = 0 Then 顧客リスト.AddItem i & " " & Worksheets(i).Name End If Next i End Sub ’----------------------

  • エクセルVBA・リストボックスに関する質問です。

    エクセルVBA初心者です。 作成したワークシート名をVBAにてリストボックス内に表示し、それを選択するとそのシートに飛ぶようにしています。 ------------------- Private Sub ListBox1_Change() With ListBox1 Worksheets(.ListIndex + 1).Activate End With End Sub ------------------- Private Sub UserForm_Initialize() Dim wsSheet As Worksheet For Each wsSheet In Worksheets ListBox1.AddItem wsSheet.Name Next wsSheet End Sub ------------------- これではすべてのシートがリストボックス内に反映される為、反映させたくないシート(3シートあるのですが)も一緒に表示されてしまいます。 この表示させたくないシートをリストボックス内に表示させない事は可能でしょうか? 又、できるとしたら、どんな言語を使用すれば良いのでしょうか? ご教授お願い致します。

  • ユーザフォームのリストボックス

    お世話になります。 ユーザフォームのリストボックス内の下記2個のどちらかを選択し Private Sub UserForm_Initialize() ListBox1.AddItem ("印刷プレビュー") ListBox1.AddItem ("印刷") End Sub CommandButton1をクリックして Worksheets("Sheet1").PrintOut か Worksheets("Sheet1").PrintPreview を実行したいのですが どうやってリストボックスとコマンドボタンを 連動できるようにすればいいのでしょうか コマンドボタンのみだったら出来るのですが、 リストボックスを使うとうまくいきません。 ご教授よろしくお願いいたします。

  • リストボックスからリストボックスへ(複数列)

    データ読み込み済みのリストボックス1(4列)から空白のリストボックス(4列)へ、コマンドボタンをクリックしたらデータが追加されるコードを作成しました。 Private Sub CommandButton1_Click() Dim i As Long For i = 0 To 8 With ListBox1 ListBox2.AddItem .List(.ListIndex, i) End With Next i データは追加されましたが、縦方向にデータが追加され、 横方向に追加されませんでした。 どうすれば複数列のデータをそのまま複数列のリストボックスに追加できるでしょうか。 よろしくお願いします。 End Sub

  • リストボックスに特定の複数のセル範囲名だけ表示させたい。

    リストボックスに特定の複数のセル範囲名だけ表示させたい。 印刷設定範囲等すべてのセル範囲設定名が以下の場合表示されます。 そこで特定のシート●のセル範囲名 「A 」「B」 「C」 だけリストボックスに表示させるにはどのようにしたらよいでしょうか? いろいろ試行してみましたがどうもうまくいきません。 Private Sub UserForm_Initialize() 'セルの範囲をリストボックスの選択項目として登録 Dim 名前 As Name For Each 名前 In ActiveWorkbook.Names Userform3.lstName.AddItem 名前.Name Next End Sub

  • シート名を変更すると、そのシートのデータがリストボックスに表示されない

    Vista SP1 ExcelXPでマクロ作成中の超初心者です。 シートA会社のセルを、右クリックすると、ユーザーフォームが現れ、その中のリストボックスにsheet1の データが表示されます。sheet2 sheet3 も同様に、正常にリストボックスが表示できています。 ところが、シートの名前 「sheet1」を、「関係データ1」に変更すると フォームにリストボックスが表示されますが、中身は表示されません。 シート名を変更しても、右クリックでリストが正常に表示できるようにするにはどうすればよろしいでしょうか。             1)ブックには,13枚のシートがあります。  1)シート名が  A会社からJ会社           sheet1 sheet2 sheet3 2)会社シートにはそれぞれ以下のコードを記入してあります。  Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True 'プロシージャ終了後に表示されるショートカットメニューの非表示 If Target.Row > 14 And Target.Row < 45 And Target.Column > 13 And Target.Column < 15 Then UserForm1.Show End If If Target.Row > 14 And Target.Row < 45 And Target.Column > 19 And Target.Column < 21 Then UserForm2.Show End If ユーザーフォームには、次のコードがあります。 Option Explicit Private Sub CommandButton1_Click() 'With ListBox1 'If .ListIndex = -1 Then 'MsgBox "項目を選択してくだい" 'Else ActiveCell.Value = ListBox1.list(ListBox1.ListIndex) End If End With Unload UserForm1 End Sub ------------------------------------------ Private Sub CommandButton2_Click() Unload UserForm1 End Sub 'Private Sub UserForm_Initialize() 'Me.StartUpPosition = 0 ' Me.Left = 200 ' Me.Top = 100 ' Me.Height = 400 ' Me.Width = 230 'End Sub Private Sub 閉じる_Click() Unload UserForm1 End Sub Private Sub ListBox1_Click() With ListBox1 If .ListIndex = -1 Then MsgBox "項目を選択してくだい" Else ActiveCell.Value = ListBox1.list(ListBox1.ListIndex) ActiveCell.Offset(0, 7).Value = ListBox1.list(ListBox1.ListIndex, 1) Selection.Offset(0, 7).Select End If End With Unload UserForm1 End Sub -------------------------------------------

  • Excel VBA リストボックスの複数列表示の方法について

    すいません、エクセルVBAのユーザーフォームのリストボックスの表示方法について質問があります。 シートのセルに    A列   D列   G列 1行 りんご  赤   120円 2行 みかん  黄   130円 3行 すいか  緑 110円 4行 りんご  赤 160円 . ・・・  ・   ・・・ . と、50行まで値を入れます。 VBAでユーザーフォームを挿入し、 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "りんご" .AddItem "みかん" .AddItem "すいか" End With End Sub でコンボボックスの値を設定し、次に Private Sub ComboBox1_Change() Dim i As Integer For i = 1 To 50 If Cells(i, 1).Value = ComboBox1.Value Then With ListBox1 .ColumnCount = 3 .AddItem Cells(i, 1) End With End If Next i End Sub このときコンボボックスと同じ値の行について、 リストボックスにA列、D列、G列を表示させるにはどうしたらいいのでしょうか。 例えばコンボボックスで「りんご」を選択したときに、 リストボックスを りんご 赤 120円 りんご 赤 160円 と表示させたいのですが、 .AddItem Cells(i, 1) では一列だけしか表示できません。 Rowsorceを使ってみたりしましたが、どうにもうまく出来ませんでした。 よろしくお願いいたします。

専門家に質問してみよう