アプリ版:「スタンプのみでお礼する」機能のリリースについて

こちら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に関するサイトは多く、様々な場所で勉強させていただきましたがどうにも理解出来ませんでした。

どうか、お助け下さい。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

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

さっそくこれの続きにかかりたいと思います。
ありがとうございましたm(_ _)m

お礼日時:2012/03/04 21:56

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


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

改めて、よろしくお願い致します。

補足日時:2012/03/03 17:35
    • good
    • 0
この回答へのお礼

長い文章を最後まで読んで頂き、その上考えを汲み取って頂いた回答に感服いたしました。
ありがとうございました。

お礼日時:2012/03/04 22:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!