エクセル2007を使用して住所録を作成しています。
一行に1名ずつの情報(各列に氏名など)が入るようになっています。
A列にリスト番号・B列に氏名、といった感じで作成しています。
一覧表示だと列の数が多く個別の内容が分かりにくいため、
ユーザーフォームを使って1件ずつ詳細を見られるようにしました。
ユーザーフォームに付けたコマンドボタン「次」を押すと
順番(住所録リストの上から順)に個別の内容が表示されるように
したのですが、オートフィルタをかけてしまうと
非表示のリストもユーザーフォームに表示されてしまいます。
そこで、いくつかの参考書などを使って組んでみたのですが、
私の作ったものではコマンドボタン「次」を押すと
オートフィルタで表示されている一番下の
リストにユーザーフォームの内容が飛んでしまいます。
どのようにすれば、オートフィルタで表示されているリストのみを
順番にユーザーフォームに表示ができるのでしょうか?
私が作ったものです。↓
Private Sub cmd次_Click()
Dim r As Range, rr As Range, rs As Range
If Not Worksheets("名簿").AutoFilterMode Then
データ行 = データ行 + 1
Else
Set r = Worksheets("名簿").Range("A3", Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
For Each rr In r
For Each rs In rr.Areas
データ行 = rs.Row
Next rs
Next
End If
表示データ変更
End Sub
このような質問で分かりにくいようでしたらすみません。
どなたかご教授いただければ幸いです。
No.2ベストアンサー
- 回答日時:
次の非表示ではない(=表示されている)行を取得できればよいということですよね?
Do
データ行 = データ行 + 1
Loop Until Not Rows(データ行).Hidden
でいけると思います。
最大行数に制限があるなどの場合は、判断条件にそれを追加してください。
fujillin様
お返事が遅くなり申し訳ありません。
必要に応じて多少のアレンジは致しましたが
ご回答頂いたコードでうまく出来ました。
私が作ったものよりも簡潔で、非常に助かりました。
ありがとうございました。
No.3
- 回答日時:
Private Sub 進む_Click()
Do
ActiveCell.Offset(1, 0).Activate
Loop Until Rows(ActiveCell.Row).Hidden = False
TextBox1 = ActiveCell.Value
End Sub
Private Sub 戻る_Click()
Do
ActiveCell.Offset(-1, 0).Activate
Loop Until Rows(ActiveCell.Row).Hidden = False
TextBox1 = ActiveCell.Value
End Sub
でいかがでしょう
kmetu様
お返事が遅くなり申し訳ありません。
fujillin様の回答と組み合わせてアレンジし、
うまく組むことが出来ました。
しかも「戻る」のコードまで頂き、
とても助かりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでオートフィルタのボ...
-
エクセルのオートフィルタで最...
-
エクセルで時刻(8:00~20:00)...
-
エクセルの偶数行(奇数行)の抽出
-
Excelのオートフィルタで非表示...
-
Excel共有ブックのオートフィル...
-
access マクロでのフィルタの...
-
ACCESSでスペースの抽出
-
エクセルで、条件に一致した行...
-
なぜShowAllDataだとうまく行か...
-
オートフィルタで表示されるリ...
-
オートフィルタで3つ以上の条...
-
エクセル フィルタで抽出したデ...
-
エクセルのオートフィルタで困...
-
エクセルで特定の列にある日付...
-
VBA オートフィルタで抽出した...
-
オートフィルタで選択したデー...
-
今日の日付のデータをすばやく...
-
エクセル関数で、数字の入った...
-
エクセル オートフィルター
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで時刻(8:00~20:00)...
-
エクセルのオートフィルタで最...
-
エクセルでオートフィルタのボ...
-
Excelのオートフィルタで非表示...
-
Excel共有ブックのオートフィル...
-
エクセル・条件付で行を削除す...
-
オートフィルタで3つ以上の条...
-
エクセルの偶数行(奇数行)の抽出
-
エクセルで、条件に一致した行...
-
エクセル関数で、数字の入った...
-
access マクロでのフィルタの...
-
エクセルにて、フィルタをかけ...
-
データの抽出を教えてください
-
なぜShowAllDataだとうまく行か...
-
オートフィルタで選択したデー...
-
Excel 非表示の列を飛ばして合...
-
エクセルのオートフィルタで抽...
-
エクセルで検索窓のようなもの...
-
【EXCEL】条件に一致した最新デ...
-
Excelマクロ:オートフィルタ3...
おすすめ情報