|
初めて投稿させていただきます。
vbaを始めたばかりで分からない箇所がありましたので質問させていただきます。
Sheet9のセルA2:A6に入力された内容をユーザーフォームに設置したコンボボックスに表示させたいと思っております。
また、今後のため、新たに追加されたデータにも対応できるようにしたいです。
そこで、以下のようなコードを記述しました。
Private Sub UserForm_Initialize()
Dim i As Long
Dim LastRow As Long
LastRow = Sheet9.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow
ComboBox01.AddItem Sheet9.Cells(i, 0).Value
Next i
End Sub
しかし、これを実行すると下記のエラーが発生しました。
「実行時エラー '1004':アプリケーション定期またはオブジェクトの定義エラーです」
また、一度間違えて上記コードの4行目(LastRow = Sheet9.Cells(Rows.Count, 1).End(xlUp).Row)を抜いて実行してしまった時があったのですが、なぜかうまくいきました。
さらに、この現象を検証するため、以下のようなコードを記述したのですが、結果としてうまく実行されました。
Private Sub UserForm_Initialize()
Dim i As Long
For i = 2 To 0
ComboBox01.AddItem Sheet9.Cells(i, 1).Value
Next i
End Sub
そこで、質問なのですが、一つ目のコードから4行目(LastRow = Sheet9.Cells(Rows.Count, 1).End(xlUp).Row)を抜いてしまうと、変数LastRowには何も値が格納されないはずだと思うのですが、なぜうまくいったのでしょうか。
また、二つ目のコードのFor Next文で初期値2で、1ずつカウントアップされて繰り返されるはずにもかかわらず、最終値が0でうまくいくのはなぜなのでしょうか。
よろしくお願いいたします。
|
|