解決済み

コンボボックスの値を参照する

  • 困ってます
  • 質問No.7338241
  • 閲覧数404
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 100% (32/32)

こちらVBA初心者です。宜しくお願い致します。

A:Aを"出身地"、
B:Bを"データ"という名前で定義しており、
D1~D3を"選択"という名前で定義しています。

入力内容はこうです。
D1・・・空白
D2・・・出身地
D3・・・データ

そしてA列とB列の最初にある空白セルを見つける為に、

Range("出身地").Select
Selection.End(xlDown).Offset(1, 0).Select


もしくは、

Range("データ").Select
Selection.End(xlDown).Offset(1, 0).Select

で可能だと言う事がわかりました。

そして、それをユーザーフォームでコンボボックス内のRowSouceに選択と入力して、
コンボボックスでどちらかを選び、ボタンを押して実行。と、したいのですがここから先がうまくいきません。

VBAに関するサイトは多く、様々な場所で勉強させていただきましたがどうにも理解出来ませんでした。

どうか、お助け下さい。

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

  • 回答No.2

ベストアンサー率 61% (121/197)

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
お礼コメント
go-to

お礼率 100% (32/32)

・・・・・・・素晴らしい

なんといいますか、理想の形が120%叶った気分です。

さっそくこれの続きにかかりたいと思います。
ありがとうございましたm(_ _)m
投稿日時 - 2012-03-04 21:56:24
Be MORE 7・12 OK-チップでイイコトはじまる

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 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

とすることも可能です。
補足コメント
go-to

お礼率 100% (32/32)

御回答ありがとうございます。

私に文章力が無いせいか、勘違いをさせてしまったのかもしれません;;;

完全に書き忘れてしまっている事もあり、そこの訂正も致します。


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に入れたい)
何か簡単なものはないかと探していた次第でございます。


質問の題を"コンボボックスの値を参照する"と書いてしまったのもいけなかったのだとも思います;;;

改めて、よろしくお願い致します。
投稿日時 - 2012-03-03 17:35:05
お礼コメント
go-to

お礼率 100% (32/32)

長い文章を最後まで読んで頂き、その上考えを汲み取って頂いた回答に感服いたしました。
ありがとうございました。
投稿日時 - 2012-03-04 22:14:19
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
このQ&Aのテーマ

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ