- ベストアンサー
コンボボックスの値を参照する
- VBA初心者の方がコンボボックスの値を参照する方法について質問されています。
- 質問内容では、出身地とデータを定義し、選択という名前でD1~D3を定義していることが分かります。
- また、空白セルを見つけるための方法として、Rangeを使用することがわかりました。しかし、その後のユーザーフォームでの処理が上手くいかないようです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 どうやら、質問を正しく理解できていなかったようです。 やりたいことは、こういうことかな? Private Sub UserForm_Initialize() Me.ComboBox1.RowSource = ActiveSheet.Range("選択").Address End Sub Private Sub CommandButton1_Click() ActiveSheet.Range(Me.ComboBox1.Value).Range("A1").End(xlDown).Offset(1).Select End Sub
その他の回答 (1)
- masa_019
- ベストアンサー率61% (121/197)
UserForm1上に、ComboBox1とComboBox2、CommandButton1があり、 ComboBox1にはアクティブシートのA列、 ComboBox2にはアクティブシートのB列のデータをセット、 CommandButton1をクリックすると、 ComboBox1の値がアクティブシートのD2に、 ComboBox2の値がアクティブシートのD3に表示されるようにしたい といったところでしょうか? Private Sub UserForm_Initialize() 'ユーザーフォームの表示前にComboBoxのRowSourceを設定 With ActiveSheet Me.ComboBox1.RowSource = .Range(.Range("A1"), .Range("A1").End(xlDown)).Address Me.ComboBox2.RowSource = .Range(.Range("B1"), .Range("B1").End(xlDown)).Address End With End Sub Private Sub CommandButton1_Click() 'ComboBoxの値をシートに出力 With ActiveSheet .Range("D2").Value = Me.ComboBox1.Value .Range("D3").Value = Me.ComboBox2.Value End With End Sub A:Aを"出身地"、 B:Bを"データ"という名前で定義する必要はありませんが、 出身地を =OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1) データを =OFFSET(Sheet1!$B$1,0,0,COUNTA(Sheet1!$B:$B),1) と定義しておけば、UserForm_Initializeのコードを Private Sub UserForm_Initialize() Me.ComboBox1.RowSource = "出身地" Me.ComboBox2.RowSource = "データ" End Sub とすることも可能です。
お礼
長い文章を最後まで読んで頂き、その上考えを汲み取って頂いた回答に感服いたしました。 ありがとうございました。
補足
御回答ありがとうございます。 私に文章力が無いせいか、勘違いをさせてしまったのかもしれません;;; 完全に書き忘れてしまっている事もあり、そこの訂正も致します。 UserForm1にはComboBoxは一つだけでそこで選択したいのはD1~D3のセルに入力してある値 >入力内容はこうです。 >D1・・・空白 >D2・・・出身地 >D3・・・データ D1は空白、D2は"出身地"という値、D3には"データ"という値が予め入っている状態 そしてD1~D3の名前を"選択"と定義してある。 コンボボックスのRowSourceに入れるのはその"選択"という範囲。 そこで選んだ方、今の状態なら"出身地"か"データ" A:Aを"出身地"、 B:Bを"データ"という名前で定義しており、 出身地を選んだのであれば、 Range("出身地").Select Selection.End(xlDown).Offset(1, 0).Select データを選んだのであれば Range("データ").Select Selection.End(xlDown).Offset(1, 0).Select これのどちらかをCommandButton1で実行したい。と考えております。 ComboBox1で選んだ値を、 Range("xxxx").Select Selection.End(xlDown).Offset(1, 0).Select のxxxxにどうやったら反映させられるのか?という事です。 それだと、ただセルを選択するだけなんじゃ?と、思われるかもしれませんがその通りです。 やりたい事はもうちょっと複雑なのですがまずはこれから。と思っております。 IF文を使うと長くなりそうですし、 (簡単に説明する為、D列には2つしか項目を入れておりませんが本当は9個の項目をComboBox1に入れたい) 何か簡単なものはないかと探していた次第でございます。 質問の題を"コンボボックスの値を参照する"と書いてしまったのもいけなかったのだとも思います;;; 改めて、よろしくお願い致します。
お礼
・・・・・・・素晴らしい なんといいますか、理想の形が120%叶った気分です。 さっそくこれの続きにかかりたいと思います。 ありがとうございましたm(_ _)m