qii-yah
@qii-yah

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

エクセルVBA

Q&A

Closed

エクセルVBAのマクロ実行を設定しております。
1つのシートの中での操作ですが

●運用方針流れ
①<UserForm1>画面にて検索実行➡結果がエクセルにリスト表示される
※UserForm名:UserForm1

②検索結果の任意のデータの詳細を<UserForm2>で表示させる
※①のリストの内、任意のデータをアクティブにして<UserForm2>を実行
※UserForm名:UserForm2

という流れで、ここまでは実装できました。

●変更したい内容:
上記の動作①の結果、複数のデータが表示された場合、
動作②の<UserForm2>にて
<前へ>というボタンでは、動作①の結果の前のデータを表示
※①の結果リストで表示されたアクティブデータの前のデータと言う意味です。

<次へ>というボタンでは、動作①の結果の次のデータを表示
※①の結果リストで表示されたアクティブデータの次のデータと言う意味です。

現在のソースコードでは、
全部のデーターが基準となり
●例えば、
動作②の<UserForm>にて
<前へ>というボタンをクリックすると、
全データーを基準とした、アクティブデータの前にあるデータが表示されてしまいます。

設定方法ご存じの方いらっしゃいましたら
是非お教えいただけます様お願い申し上げます。

0

1Answer

もっと賢いやり方がありそうなんですが、とりあえず、非表示行をスキップしてはどうでしょうか。
do while 〜 loopの3行を追加

Private Sub btnBack_Click()
    If ActiveCell.Row > 2 Then
        ActiveCell.Offset(-1, 0).Activate
        Do While ActiveCell.Rows.Hidden And ActiveCell.Row > 2
            ActiveCell.Offset(-1, 0).Activate
        Loop
        Call updateForm
    End If
End Sub

Private Sub btnNext_Click()
    ActiveCell.Offset(1, 0).Activate
    Do While ActiveCell.Rows.Hidden
        ActiveCell.Offset(1, 0).Activate
    Loop
    Call updateForm
End Sub
1Like

Comments

  1. @qii-yah

    Questioner

    @nak435さま

    今回も迅速に教えていただきありがとうございます!
    凄いです!
    実装できました!!
    今朝6時からずっと色々試していましたが、できず、
    質問投稿させていただきました!
    教えていただいたコードを張り付けただけで実装できました!
    返信が遅くなりましたのは、念の為、何度も検証したためです。
    本当にいつもありがとうございます!

Your answer might help someone💌