• ベストアンサー

エクセルでリストの表示

皆さんこんにちは。 エクセル2002で、セルA1にリストで1と2を選べるようにしたとします。このとき1を選んだら、セルA2にはリストで「あ、い、う」が選べ、2を選んだらセルA2にはリストで「か、き、く」が選べるようには出来ませんか? VBAを使った物でもかまいませんが、なるべくシンプルに考えたいです。 もし、出来ないのであれば、どんなアプリを使えば簡単に作れるのでしょうか?VBなら少しは使えますが、今後はアクセスなんかも使えるようにしたいと思っていますので、エクセルでは不可能ならそちらで使えるかでも教えてください。 宜しく御願いします。

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

  • ベストアンサー
  • austin32
  • ベストアンサー率31% (11/35)
回答No.2

普通にドロップダウンリストを使用するのでしたら、 マクロを使わずとも関数だけで処理できそうですね。 #ぼく自身、マクロって苦手なもんで、関数でまかないます(汗)。 使用する関数は、IF文だけです。

lpine
質問者

お礼

シンプルで分かりやすかったです。 ありがとう御座いました。

その他の回答 (3)

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

(1)コントロールツールボックスのリストボックスをワークシートSheet1に2つ貼りつけます。適当な大きさにします。 (2)ワークシートのSheet1のE1:I3に(じつはどこでも良いが下記コードが多少変る。別シートでも可能。) 大阪府 大阪市 堺市 99 京都県 京都市 長岡京市 亀岡市 99 奈良県 奈良市 生駒市 99 99は終りを示すために入れた符牒です。 (3)ListBox1のプロパテイを開き、ListFillRangeに E1:E3(大阪府、京都府、奈良県のあるセル)を入れる。 ListBox1に大阪府、京都府、奈良県が出る用意が出来たわけです。(プログラムででも出来ます。) (4)それぞれのリストボックスをダブルクリックして出てくるVBE画面に Private Sub ListBox1_Click() Sub End Private Sub ListBox2_Click() Sub End の中間に、下記コードの中身部分をコピーし貼りつけ下記のようにする。 Private Sub ListBox1_Click() n = ListBox1.ListIndex ListBox2.Visible = True ListBox2.Clear For i = 6 To 10 'F列より右 If Cells(n + 1, i) = 99 Then Exit For ListBox2.AddItem Cells(n + 1, i) Next i End Sub Private Sub ListBox2_Click() ActiveCell = ListBox2.List(ListBox2.ListIndex) ListBox2.Visible = False End Sub VBE画面で、デザインモードを解除して、ワークシートに戻る。 (5)利用方法は データをセットしたいセル(例えばA3)を一旦クリックしておいて、例えばListBox1の奈良県をクリックすると、ListBox2が現れて、奈良市、生駒市が出てくるから、例えば生駒市をクリックすると、A3に生駒市がセットされ、ListBox2が消えます。

lpine
質問者

お礼

回答ありがとう御座います。 参考になりました。

回答No.3

こちらはどうでしょうか。

参考URL:
http://www2.odn.ne.jp/excel/waza/validation.html#SEC5
lpine
質問者

お礼

回答ありがとう御座います。 参考になりました。

回答No.1

こんにちは、Takayukiです。 以下は、自分が実際に使用しているマクロです。 ほとんどマクロ記録のままといえるようなものですが、参考になれば幸いです。 なお、複数のリスト範囲に名前を付けて入力されたセルの内容を読み出し、切り替えています。 動作はかなり高速ですので違和感はないと思います。 [ syokubamei ]=リスト範囲の名前となります。 ご参考までに・・・ Private Sub Worksheet_Change(ByVal Target As Excel.Range) ' '工程名設定 '変数宣言 Dim INP_NO, INP_LI As Integer Dim syokubamei As String '入力位置 INP_NO = Target.Row '入力された行 INP_LI = Target.Column '入力された列 M_TOP = 5 '入力範囲TOP M_END = 104 '入力範囲END '処理範囲 If INP_NO < M_TOP Or INP_NO > M_END Then Exit Sub '入力範囲以外は処理しない End If If INP_LI <> 3 Then Exit Sub '入力範囲以外は処理しない End If '変数設定 On Error GoTo END_PRO: syokubamei = Target.Value '入力内容 '工程名設定 Cells(INP_NO, INP_LI + 1).Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=" + syokubamei .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With END_PRO: End Sub

lpine
質問者

お礼

回答ありがとう御座います。 やっぱりマクロを使用すると複雑ですね。 参考になりました。