[[20230803152604]] 『行数が存在無しの場合エラーを回避するには』(SATO) ページの最後に飛ぶ

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

 

『行数が存在無しの場合エラーを回避するには』(SATO)

こんにちは
よろしくお願いします。
ListView1について質問です(リスト列はコマンドボタン切り替え可能)
下のマクロでスクロール量が多い場合ジャンプしていますが
リスト行が300に満たない場合エラーとなります。
回避方法を教示ください。
よろしくお願いします。

Private Sub CommandButton6_Click()
ListView1.ListItems(300).EnsureVisible
End Sub

< 使用 Excel:Excel2019、使用 OS:Windows11 >


ListItemsのCountプロパティを調べて、それと300とのMinをとったものに変更すればよいのでは?

(xyz) 2023/08/03(木) 15:38:33


(xyz)さん
返事ありがとうございます。
ListView1の表示ですが、コマンドボタンにて表示列を変更可能にしているのですが
列により300以上、100以下とまちまちなので仮に300以下の時だけ「利用不可」などの
表示をし、エラー回避できないでしょうか?
(SATO) 2023/08/03(木) 15:57:19

 Private Sub CommandButton6_Click()
    Dim lstC As Long
    With ListView1
        lstC = (.SelectedItem.Index + .ListItems.Count) / 2
        If lstC > 0 Then
            .ListItems(lstC).EnsureVisible
        End If
    End With
 End Sub

よくわかりませんがリストの残り半分ずつスクロールするものを試作
(火災報知器) 2023/08/03(木) 16:09:20


 質問者さんはお詳しい方のようなので、
 http://officetanaka.net/excel/vba/listview/
 とobjectブラウザーで研究してみてください。
 ListSubItemsなどを使うんですかね。
 # ちょっと別の用事をしているんで。

(xyz) 2023/08/03(木) 16:32:05


 Private Sub CommandButton1_Click()
    Static idx As Long
    Dim listCount As Long
    With ListView1
        listCount = .ListItems.Count
        If listCount >= 300 Then
            idx = (idx + listCount) / 2
            If idx >= listCount Then idx = 1
            If idx > 0 Then .ListItems(idx).EnsureVisible
        Else
            MsgBox "利用不可"
        End If
    End With
 End Sub

ちょっと変更

(火災報知器) 2023/08/03(木) 16:37:40


(xyz)さん
ありがとうございました。
URL参考になりました。

(火災報知器)さん
ありがとうございました。希望通りの動きできました。

(SATO) 2023/08/03(木) 17:03:25


コメント返信:

[ 一覧(最新更新順) ]


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