• ベストアンサー

Exel VBA コンボボックスで選択した値以外の値をセルに入力する方法

初めて質問します。 コンボボックスから選択した値によって、 セルに値を入力する方法を教えて下さい。 コンボボックスの値は、1、2、3。 1を選択した時には、A1にA、 2を選択した時には、A2にB、 3を選択した時には、A3にCを入力する。 といったかんじにしたいです。 本やネットなど色々調べてみたのですが、わかりませんでした。 初歩的な質問かもしれませんが、どなたか教えて下さい。 よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

Sheet1にコンボボックスを1つ貼り付ける。 そのプロパtィのListFillRangeをたとえばI1:I3にし、I1に1、I2に2、I3に3を入れる。 Combobox1をダブルクリックして出てくるところの Combobox1のchangeイベントに Private Sub ComboBox1_Change() Range(Cells(1, 1), Cells(3, 1)) = "" If ComboBox1.Value = 1 Then Cells(1, 1) = "A" If ComboBox1.Value = 2 Then Cells(2, 1) = "B" If ComboBox1.Value = 3 Then Cells(3, 1) = "C" End Sub デザインモードを脱する。 これでコンボボックスの値を選ぶと A1kaA2かA3に値をセットし、今までの他の選択値は消える。 Case文で分けても良いと思う。

9-bt
質問者

お礼

うまくいきました。 悩んでたのがすっきりしました。 ありがとうございました!

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 私の方法は、ちょっとむつかしいかもしれませんね。慣れていれば簡単なことですが、ネットでは、そのような説明は出てきませんね。 ComboBox の値は、元々配列構造になっていますから、配列にして、Listで渡してしまえばよいです。その配列を作る方法をどうするか、ということになってしまいますね。 ワークシートから起こして、ListFillRange で、ComboBox に渡してももよいかとは思います。ただ、ListFillRangeに書き込むなら、私の"NewComboValue"とThisWorkbookのOpenプロシージャは不要です。 私個人は、ComboBoxは、なるべくワークシートからのデータをインポートしません。万が一に失ったり改編されたりすることがあるからです。 '-------------------------------------- '<シートモジュールモジュール> Sub NewComboValues() 'ListFillRangeに入れる場合は不要 Dim myList(2, 1) As Variant  ComboBox1.Clear  myList(0, 0) = 1: myList(0, 1) = "A"  myList(1, 0) = 2: myList(1, 1) = "B"  myList(2, 0) = 3: myList(2, 1) = "C"  ComboBox1.List = myList End Sub Private Sub ComboBox1_Click() 'クリックで入力 With ComboBox1  Range("A" & .List(.ListIndex, 0)).Value = .List(.ListIndex, 1) End With End Sub '-------------------------------------- '<ThisWorkbook> 'ListFillRangeに入れる場合は不要 Private Sub Workbook_Open()  'Sheet1モジュールにある場合  Call Sheet1.NewComboValues End Sub

9-bt
質問者

お礼

初心者なもので手間取りましたが、なんとかうまくいきました。 ワークシートからインポートすることしか頭になかったので、参考になりました。 丁寧に回答していただき、ありがとうございました。

関連するQ&A

専門家に質問してみよう