Excel VBA質問箱 IV

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

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


19712 / 76732 ←次へ | 前へ→

【62448】Re:コンボボックスの表示について
発言  ひつまぶし  - 09/7/22(水) 17:19 -

引用なし
パスワード
   >UserForm1.Controls("ComboBox" & cboNumberYear).RowSource = _
>      Worksheets("RowSource_List").Range("B2:B15").Address

>UserForm1.Controls("ComboBox" & cboNumberSeason).RowSource = _
>      Worksheets("RowSource_List").Range("E2:E5").Address
この指定方法では、各コンボボックスのRowSoruceプロパティには、
"$B$2:$B$15"や"$E$2:$E$5"といったアドレスしか渡りません。
そうすると、フォームのInitializeイベントを通った時に、
たまたまActiveだったシートのその範囲が設定されたことになりますからね。

どのシートのアドレスなのかまで指定してやれば間違いを起こさないでしょう。

  Dim r1 As Range, r2 As Range
  Dim i As Long
  With Worksheets("RowSource_List")
    Set r1 = .Range("B2:B15")
    Set r2 = .Range("E2:E5")
  End With
  For i = 1 To 3
    Me.Controls("ComboBox" & i).RowSource = r1.Address(External=True)
  Next i  
  For i = 7 To 9  
    Me.Controls("ComboBox" & i).RowSource = r2.Address(External=True)
  Next i

というように、Addressプロパティを外部参照付きで呼び出すのも有効かと思います。

あと、
>【Q2】
>cboNumberSeasonのコンボボックスが一覧しません。
>多分、cboNumberSeasonの変数型が整数だからかなと思っていますが、
>Range("E2:E5")は、文字データです。
は、上の理屈で、そのフォームをロードしようとした時の
ActiveSheet上の"E2:E5"がブランクだったとか?
117 hits

【62412】コンボボックスの表示について T-K 09/7/21(火) 15:35 質問
【62413】Re:コンボボックスの表示について つん 09/7/21(火) 15:53 回答
【62415】Re:コンボボックスの表示について T-K 09/7/21(火) 16:20 お礼
【62417】Re:コンボボックスの表示について つん 09/7/21(火) 16:36 発言
【62423】Re:コンボボックスの表示について T-K 09/7/21(火) 17:42 回答
【62432】Re:コンボボックスの表示について つん 09/7/22(水) 10:31 発言
【62440】Re:コンボボックスの表示について T-K 09/7/22(水) 16:24 質問
【62445】Re:コンボボックスの表示について つん 09/7/22(水) 16:56 回答
【62448】Re:コンボボックスの表示について ひつまぶし 09/7/22(水) 17:19 発言
【62467】Re:コンボボックスの表示について T-K 09/7/23(木) 9:30 お礼
【62433】Re:コンボボックスの表示について neptune 09/7/22(水) 11:01 発言
【62441】Re:コンボボックスの表示について T-K 09/7/22(水) 16:33 お礼
【62414】Re:コンボボックスの表示について ponpon 09/7/21(火) 16:11 発言
【62422】Re:コンボボックスの表示について T-K 09/7/21(火) 17:37 お礼

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