プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になってます。
エクセルで、リストボックスやコンボボックス等を使用して、リストを選んだとき、Aを選んだらAの横に、Bを選んだらBの横にと、リストとデーターを関連づけて入力する方法を教えてください。
月曜日にはここに書き込むとか、11月10日はここ、11月11日にはここ、といった指定方法が解りません。
リストは出来ているのですが、選択できても役に立ちません。
色々考えたり探したりしたのですが解りません。助けてください。お願いします。

A 回答 (3件)

質問の意味をほとんど理解していないと思いますが、想像してみました。



決められたセル入力したデータを、選択したコンボボックスのリストの横に書き込みます。
例として、リストは連続範囲に縦に入力された月曜日、火曜日・・・日曜日です。(データと同一シート上)

シート上に、コントロールツールボックスのコンボボックスを使ってみました。(ComboBox1)
シートに月曜日、火曜日・・・日曜日と縦に入力し、範囲名Youbiをつけます。
コンボボックスのListFillRange(リストとして表示されます)にYoubiを入力。

入力データ(任意のセル)に範囲名Dataを付けます。
VBE画面のシートのコードウインドウに下記(3行)を貼り付けます。

Private Sub ComboBox1_Click()
  Range("Youbi").Cells(ComboBox1.ListIndex + 1, 2) = Range("Data")
End Sub


意味が不明な点です。
>リストボックスやコンボボックス等
  ・実際はどのコントロールでしょうか。
  ・フォームのコントロール? コントロールツールボックスのコントロール?
  ・これらのコントロールはシートにある? ユーザーフォームにある?
>リストは出来ているのですが
  ・セルの範囲を指定? AddItemで追加?
  ・リストはシート上に何かの規則で入力されている?
>リストとデーターを関連づけて
  ・このデーターはセルでしょうか。
  ・このデーターとリストは同一シートにあります? または別シート?

このあたりがはっきりすれば考えやすいんですが・・・・とりあえず参考にして下さい。

この回答への補足

ありがとうございます。
内容説明が下手ですいません。
あくまでも、ユーザーフォームからということでです。

>リストボックスやコンボボックス等
ユーザーフォームに、曜日や日にちを選択できるようなものがほしいです。
リストでもコンボでも何でもいいです。  
>リストは出来ているのですが
シート1のA2~A8のようにコンボで指定してみました。
>リストとデーターを関連づけて
テキストボックスから、リストで選択したのがA2の値ならA2のよこB2、A3の値ならB3などに書き込まれるようにしたいのです。同じシートの隣のセルということでしょうか。

なんとかなりますでしょうか?お願いします

補足日時:2001/11/11 00:58
    • good
    • 0

シートはSheet1とします。

A2~A8に範囲名Youbiを付けます。(曜日のつもりです)

ユーザーフォームに
 テキストボックス(TextBox1)と
 コンボボックス(ComboBox1)を作成。コンボボックスのRowSourceをYoubiとします。

ユーザーフォームのコードウインドウに下の3行を貼り付けます。

Private Sub ComboBox1_Click()
  Worksheets("Sheet1").Range("Youbi").Cells(ComboBox1.ListIndex + 1, 2) = TextBox1.Text
End Sub

質問のにあるように指定したリストの隣に表示されると思いますが・・・がんばって下さい。では。
    • good
    • 0
この回答へのお礼

ありがとうございます。
コンボで指定しているのは
Private Sub UserForm_Initialize() 'ユーザーフォームを初期化する
10 For I = 0 To 6 'Iが0から6まで(12行-1から18行-1まで)
20 ComboBox1.AddItem Worksheets("Sheet1").Cells(I + 12, 1).Value 'シートのA列
30 Next '繰り返す
End Sub
こんな方法です。
ここに、教えていただいた三行を追加したところ「構文エラー」になりました。色々確かめてもうまくいきません。。。
使っているのがmacのエクセル98or2001なのでエクセルにもその辺りの違いが出たりするのでしょうか??

お礼日時:2001/11/11 11:34

macでしたか。

コードを見て、windowsのExcelと大差はないと思いますのでAddItemした範囲の横を指定しています。
ComboBox1.ListIndexでクリックしたリストが何番目か分かります。(1番目のリストは0)この辺りの機能がmacがどうなっているか分かりませんので確認してください。
これで行番号が分かるのでその右にTextBox1の値を書き出します。前回回答した、範囲名の設定、RowSourceの設定は不要です。

Private Sub ComboBox1_Click()
  Worksheets("Sheet1").Cells(ComboBox1.ListIndex + 12, 2) = TextBox1.Text
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
何とか考えていたものが出来てきました。
最終的には下のような形で落ち着きました。
ありがとうございました。

Private Sub CommandButton1_Click()
Worksheets("Sheet1").Cells(ComboBox1.ListIndex + 2, 2) = TextBox1.Text
Worksheets("Sheet1").Cells(ComboBox1.ListIndex + 2, 3) = TextBox2.Text
End Sub
Private Sub UserForm_Initialize()
10 For I = 0 To 6
20 ComboBox1.AddItem Worksheets("Sheet1").Cells(I + 2, 1).Value 30 Next
End Sub

お礼日時:2001/11/11 13:35

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