こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL VBAで作成したスクロールバーの不具合を修正したいのですが

ちょっと言葉だと説明しにくいのですが、教えていただきたいことがあります。
EXCEL VBAでスクロールバーを作成したのですが、
スクロールバーの上部1/5程度で全部のデータが終わってしまいます。
データ数に合わせて、スクロールした一番最後に最後のデータが来るように修正することは可能でしょうか。
自分で色々試してみましたが原因がさっぱりわかりませんでした。

作成したマクロは以下のとおりです。
*シート「一覧」のA列~D列×3000行のデータを入力
 シート「リスト」にスクロールバーを設置

Private Sub ScrollBar1_Change()
currow = ScrollBar1.Value
Call smpscrollbar
End Sub

Private Sub Workbook_Open()
currow = 3
With Sheets("リスト").ScrollBar1
.Min = 3
.Max = Sheets("一覧").Range("A1").CurrentRegion.Rows.Count
End With
Call smpscrollbar
End Sub

Sub smpscrollbar()
With Sheets("リスト")
.Range("B1").Value = Sheets("一覧").Range("A" & currow).Value
.Range("E1").Value = Sheets("一覧").Range("B" & currow).Value
.Range("I1").Value = Sheets("一覧").Range("C" & currow).Value
.Range("N1").Value = Sheets("一覧").Range("D" & currow).Value
End With
End Sub

投稿日時 - 2008-02-13 20:30:41

QNo.3772973

困ってます

質問者が選んだベストアンサー

.Max = Sheets("一覧").Range("A1").CurrentRegion.Rows.Count
の行の後に
Sheets("一覧").Range("A1").CurrentRegion.select
または
MsgBox .Max
を加えて、CurrentRegionや.maxが何になっているか確認してみてはどうでしょうか?

思わぬ値になっていたら、
.Max = Sheets("一覧").UsedRange.Rows.Count
.Max = Sheets("一覧").Cells(Sheets("一覧").Rows.Count, 1).End(xlUp).Row(A列の最後の行)
.Max = Sheets("一覧").Cells(65536, 1).End(xlUp).Row(Sheets("一覧").Rows.CountはExcel2007以前では65536なので)
.Max = Debug.Print Sheets("一覧").Range("A65536").End(xlUp).Row(CellをRangeにした場合)
とかに変更するといいかもしれません。

投稿日時 - 2008-02-14 05:43:50

お礼

End(xlUp)でMAXを調整する手がありましたか!
ありがとうございました。早速試してみます。

投稿日時 - 2008-02-14 06:52:06

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問