- 締切済み
VBA ユーザーフォームを使って
簡素化して書きますがエクセルシートのA1からZ100までデータがあります。(行は増え続けます) A1からZ1までの1行のデータをまとめて1画面に表示したくてユーザーフォームで作ってみました。(ラベル使用) ユーザーフォーム上で「次へ」ボタンを作成し、それをクリックすると次は A2からZ2までを表示させたいのですがやりかたがわかりません。 (また、「戻る」ボタンを作成し、それをクリックすると1行上へ戻るようにしたいです) VBAは初心者もいいところでネットで調べまくってやっています。 が、なかなか思うような結果にならずみなさんのお力をお貸しいただきたいと思います。 実際のデータは色々複雑なのでソースをあえて載せていませんのでご了承ください。 こういうやり方があるよって事を教えて頂けたらと思います。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
スピンボタンを配置して,スピンボタンの値が「今何行目を表示している」にしておけば簡単です。 作成例: for i = 1 to XXX me.controls("Label" & i) = worksheets("シート名").cells(me.spinbutton1.value, i).value next i ○スピンボタンのchangeイベントでラベルに転記すること ○ユーザーフォームのinitializeイベントでスピンボタンのmin,max,ラベルの初期表示値を設定すること
- admin3
- ベストアンサー率33% (55/164)
ユーザフォームの編集中に、今回なら「次へ」のボタンの上でWクリックすると、 「次へ」ボタンをクリックした時に実行される処理の大枠が作られます。 例) Private Sub CommandButton1_Click( ) End Sub あとは、その処理内にコードを記述すれば、「次へ」ボタンを押した時に実行されます。 コードは頭使わなければ、do whileとかでAからZまでのデータを各ラベルに格納し、 取得する行はフォームロード時にどの行を読んだか、変数に保存しておいて、それに+1していけば良いはず。 あとはゴリゴリ回すだけ。 「戻る」場合はそれの逆に-1していけば良いでしょう。