「VBA マルチページ 切り替え」で来ている方…
知りたいのは、方法なのかなぁ… 思った方法ではできなかったりして、ちょっと嫌になるんですよねぇ(^^;
ワシはそれではまりました。Accessの時もExcelの時も…
私の場合は殆ど使わないので、直ぐ忘れるんですけどね…
Excel2000のVBAで作ったサンプル。
私の場合、マルチページって、小さい画面にページを切り替えても良いから一括管理したいオブジェクトがある時に良く使います。タブストリップだとちょっと感じが合わないときですかな(^^;
制御は、MultiPage1.Value 値は、1ページ目が0
それを「スピンボタン」や「コマンドボタン」で切り替える。このボタン操作でページを切り替えるのがどのプロパティだったのかを良く忘れる(^^;
■ スピンボタン(1)
Page1からPage5までスピンボタンで移動させる。
UserForm1が開く前にMultiPage1のページ数にあわせてスピンボタンの最大最小を決めてしまいます。SpinButton1の値がそのままページ表示のための値とすれば問題なし。
Private Sub UserForm_Initialize() With SpinButton1 .Value = 0 .Min = 0 .Max = MultiPage1.Pages.Count - 1 End With End Sub ---------------------------------------------------------------------- Private Sub SpinButton1_Change() Dim PageNumber As Integer PageNumber = SpinButton1.Value MultiPage1.Value = PageNumber End Sub ----------------------------------------------------------------------
■ スピンボタン(2)
上記の場合は、Page1からPage5まで移動するとそこで止まる。最初も最後もそのページで止まる。
でも、Page5まで移動してもう一回ボタンを押すとPage1に戻ったりその逆にPage1からPage5に移動したりできないだろうか。と、考えてみたのが、下のコード。ちょっと条件判断を加えたんですけど、もう少しスマートな方法がきっとあると思うがとりあえず動く。スピンボタンの最大最小を一つ多めにとっておくのが、肝かも…。
で、こんな感じ…
Private Sub UserForm_Initialize() With SpinButton1 .Value = 0 .Min = -1 .Max = MultiPage1.Pages.Count End With End Sub ---------------------------------------------------------------------- Private Sub SpinButton1_Change() Dim PageNumber As Integer If SpinButton1.Value = MultiPage1.Pages.Count Then SpinButton1.Value = 0 ElseIf SpinButton1.Value = -1 Then SpinButton1.Value = MultiPage1.Pages.Count - 1 End If PageNumber = SpinButton1.Value MultiPage1.Value = PageNumber End Sub ----------------------------------------------------------------------