Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2622 / 76734 ←次へ | 前へ→

【79754】Re:コンボボックスのリスト表示について
回答  りった  - 18/3/30(金) 14:12 -

引用なし
パスワード
   ▼VICH さん:
>初めて投稿させていただきます。
>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':アプリケーション定期またはオブジェクトの定義エラーです」

⇒ 誤: Cells(i, 0) 正:Cells(i, 1)


>また、一度間違えて上記コードの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 i = 2 To 0」の意味は、
  「最初iに2を入れなさい。iが0以下だったら下記の処理を繰り返しなさい。」
  だから、一回も処理しなかったものと思います。

>また、二つ目のコードのFor Next文で初期値2で、1ずつカウントアップされて繰り返されるはずにもかかわらず、最終値が0でうまくいくのはなぜなのでしょうか。
>
>よろしくお願いいたします。

尚、質問とは異なりますが、「Rows.Count」と書くのは事故の元なので、Sheet9.Rows.Count」等と、シート名を書いた方が良いかと思います。

4 hits

【79750】コンボボックスのリスト表示について VICH 18/3/30(金) 8:31 質問[未読]
【79754】Re:コンボボックスのリスト表示について りった 18/3/30(金) 14:12 回答[未読]
【79757】Re:コンボボックスのリスト表示について VICH 18/3/31(土) 18:04 質問[未読]
【79758】Re:コンボボックスのリスト表示について VICH 18/4/1(日) 22:27 お礼[未読]

2622 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free