Microsoft Access 掲示板

縦スクロールバーをマウスでつかむときに表示される レコード:13/44 の値を取得したい / 11

19 コメント
views
4 フォロー
11

すみません、補足です。上記のように

Me.Section("フォームヘッダー").Height  '値:454(0.8cm)

の高さだと四捨五入 Int((curTop / Me.Section("詳細").Height)+0.5) をすれば成り立つのですが、

Me.Section("フォームヘッダー").Height  '値:340(0.6cm)

の高さだと四捨五入すると逆にずれ、どの場所でもそのままで成り立つという現象になり、なかなか安定せずに悩んでおりました。

通報 ...
  • 13

    なんだか丸め誤差といえるほど小さな誤差じゃなさそうですね
    ヘッダーと詳細セクションの間、詳細セクション同士(レコード同士)の間に高さがあるのかもしれません
    後ほど検証してみようと思いますが、取り掛かりまでしばらくかかりそうです(hatenaさんが素晴らしい回答をされているので甘えます)


    そもそも詳細セクションがいくつ並んでるかを求めるという話なので、詳細セクション合計の高さを詳細セクション個別の高さで割ればレコードの数になるはずです
    CurrentSectionTopはフォーム上端からの高さを返すのでヘッダー分を引かなければなりませんが、「レコード分に換算して引く」という手法がよくわかりません。単純にCurrentSectionTopからヘッダー分の高さを引けば詳細セクション合計の高さが残るはずです

    計算式は((ヘッダー + レコード数 * height) - ヘッダー) / heightとなり、そもそも小数点が出る計算がおかしいというのを焦点にしたかったんですが、結果は検証してみてですね