現在、仕事でVB6扱っているのですが,
複数あるチェックボックスの数個を押下し
次の画面へ遷移するときに、
動的に画面にそのチェックされたチェックボックスに
紐づいている、項目をループで繰り返してフォームに縦にならべてるのですが、
あまりにその項目が多いとオーバーフローしてしまいます。
Check1(0).Caption = strColumn(0)
Label1(0).Caption = tablename
For j = 1 To UBound(strColumn)
Load Check1(j)
With Check1(j)
.Move .Left, .Top + j * 390
.Caption = strColumn(j)
.Visible = True
End With
Load Label1(j)
With Label1(j)
.Move .Left, .Top + j * 390
.Caption = tablename
.Visible = True
End With
l = j + 1
Next j
こんな感じなのですが。
何かフォーム自体にHeightか何かの上限があるのか、
もしくは、ただ単にコードが悪いだけなのかよくわかりません。
よろしければどなたかご教示ください。
変数 j が、Integer型として宣言されていませんか?
もしそうなら、j が 85以上になった時点で、Moveメソッドの行がオーバーフローしますよ。
(85 * 390 の結果は、Integerの上限である 32767 を超えてしまいます)
> .Move .Left, .Top + j * 390
この部分を
.Move .Left, .Top + j * 390!
にしてみてください。
(もしくは、j のデータ型を Long等に変更してください)
魔界の仮面弁士さん、お早い返事ありがとうございました。
おかげさまで解決することができました。
本当にありがとうございました。