• ベストアンサー

ユーザーフォーム上にコンボボックス作成

ここの書き込みでも何度も書きましたが、まだ解決できません。 sheet1:にボタンをクリックすると、ユーザーフォームが現れ、その上にコンボボックスを作成しました。 sheet2:には、リストの項目を書いています。それをコンボボックスに表示させたいのですが、上手くいきません。すいません何度、本当に知りたいです 下記を記述しても表示できません。 Private Sub 記入フォームAC_Initialize() For I = 0 To 7 コンボA.AddItem Worksheets("データ").Cells(I + 2, 2).Value Next End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.5

No3, onlyromです。 >papayukaさんの記述をしたところ、リストは開く事は出来ました。 >全て空白状態になっています 上手くいかない方がおかしいですよ。 シート「データ」のB2~B8までにちゃんと値は入っていますか??? 再度確認してください。 またリストの元の値がシートにある場合は、 No.4さんの回答にあるRowSourceプロパティを使うのがふつうです。   '------------------------------------------- Private Sub UserForm_Initialize() Dim LastRow As Long LastRow = Sheets("データ").Range("B65536").End(xlUp).Row コンボA.RowSource = "データ!B2:B" & LastRow End Sub '------------------------------------------- 上記は、リストが、シートデータのB2からB列の値が入ってる最後までをとる方法です。 何れにしろ、質問者のコードをアップするのが解決の一番の早道でしょう。

pop2003
質問者

お礼

ありがとうございました。ようやく解決できました。また教えてください。

その他の回答 (4)

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.4

別解ですが、こういう方法もありますよ。 Private Sub UserForm_Initialize()   コンボA.RowSource = "データ!B2:B9" End Sub 参考>http://www.serpress.co.jp/excel/vba019.html

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

papayukaさんが正解を出されていますが、一言。 今回のように、UserForm名を ”記入フォームAC”と変更しても、 UserFormのイベントプロシージャー名は、UserFormのままです。 コードウィンドのオブジェクトボックスの中のユーザーフォームも、  記入フォームAC ではなくて、  UserForm    のままですよね。 最初、 Private Sub UserForm_Initialize()    こう表示されたのを Private Sub 記入フォームAC_Initialize  と変更しましたね。 勝手に変えてはいけません!  

pop2003
質問者

お礼

ありがとうございました。勝手に変えていました。papayukaさんの記述をしたところ、リストは開く事は出来ました。全て空白状態になっています。オブジェクトを何か変えるのでしょうか?この問題が解けなくて困っています。教えてください。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

下記だとどうですか? Private Sub UserForm_Initialize()  For I = 0 To 7   コンボA.AddItem Worksheets("データ").Cells(I + 2, 2).Value  Next End Sub

pop2003
質問者

お礼

ありがとうございました。フォームにてクリックするとリストは開く事は出来ました。しかし全部空白状態になっています。他に何かあるんでしょうか>?

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

コンボボックスにAddItemしてからUserform1.Showをするのが一般的です。ですから >ボタンをクリックすると 起動されるサブモジュールに書けばよいです Sub FormShow() Dim I As Integer  コンボA.Clear 'コンボボックスのリストをクリア  For I = 0 To 7   コンボA.AddItem Worksheets("データ").Cells(I + 2, 2).Value  Next  Userform1.Show End Sub のようにしてみたらいかがでしょうか。 蛇足ですがコンボボックスといっても  ユーザーフォームのコンボボックス  シートに配置したコントロールのコンボボックス  シートに配置したフォームのコンボボックス といろいろあります。前の質問ではそれを明示していないから期待する回答が得られなかったのではないでしょうか

pop2003
質問者

お礼

ありがとうございました。フォームにも色々あるんだなと思いました。記述を書いてもリストされません。やはりまだ問題があるのでしょうか?

関連するQ&A