[[20220408110214]] 『リストボックスのリストに非表示行を表示(取得)』(だいず) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『リストボックスのリストに非表示行を表示(取得)しないようにしたい』(だいず)

ユーザーフォームのリストにセル範囲を取得してリストに表示し、
その中から選択した項目を検索して飛べるようなものを作成してみました。
そのセル範囲には空白の行(セル)と非表示になっている行があります。

空白の行についてはリストに表示しないようにできたのですが、
非表示の行をリスト表示しないようにすることがうまくできません。

下記が非表示行を取得しないようしようとしているコードになります。

Private Sub ToggleButton1_Change()

On Error Resume Next

Dim i As Integer
Dim List_Text

List_Text = Range("Model_List")

    If ToggleButton1.Value = True Then
        ToggleButton1.BackColor = vbRed
        ToggleButton1.Caption = "○○ ON"

        ToggleButton2.Value = False
        ToggleButton3.Value = False
        ToggleButton4.Value = False

        ListBox1.List = List_Text

        For i = ListBox1.ListCount - 1 To 0 Step -1
        If ListBox1.List(i) = "" Then ListBox1.RemoveItem i
        Next i
    Else
        ToggleButton1.BackColor = RGB(255, 255, 192)
        ToggleButton1.Caption = "○○"

        ListBox1.Clear
    End If
End Sub

トグルボタンをTrueにしたらリストに List_Text = Range("Model_List") の
範囲が表示されるようにしてます。

Range("Model_List")は C15からC379 の範囲です。(名前をつけてます)

List_Text = Range("Model_List")の部分を
List_Text = Range("Model_List").CurrentRegion.SpecialCells(xlCellTypeVisible)
に変えたらいけるかなと思ったのですがうまくいきませんでした。

どうすればよいか教えていただけないでしょうか。

< 使用 Excel:Office365、使用 OS:Windows10 >


        For i = ListBox1.ListCount - 1 To 0 Step -1
            If ListBox1.List(i) = "" Then ListBox1.RemoveItem i
            If Range("Model_List").Rows(i + 1).EntireRow.Hidden Then ListBox1.RemoveItem i
        Next i

        では

(ピンク) 2022/04/08(金) 12:31


非表示セル内に空白が有ると正しく処理されないようなので
 For i = ListBox1.ListCount - 1 To 0 Step -1
     If Range("Model_List").Rows(i + 1).EntireRow.Hidden Or _
             ListBox1.List(i) = "" Then ListBox1.RemoveItem i
 Next i

(ピンク) 2022/04/08(金) 12:52


希望通りのことができるようになりました!
教えてくださり有難うございました!
(だいず) 2022/04/08(金) 13:07

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.