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

はじめまして。
私は今仕事でちょっとしたシステムをエクセルで作っています。
VBAを初めて使うのでご教示頂けたら幸いです。

私が作りたいシステムのイメージは下記の通りです。

リストボックスが二つあって、それぞれ大カテゴリと小カテゴリ。
例えば大カテゴリには野菜、魚、果物などが選択できるようになっていて、
大カテゴリで野菜を選択した場合には小カテゴリでじゃがいも、玉ねぎ、ほうれん草が、
大カテゴリで魚を選択した場合には小カテゴリで鮭、秋刀魚、鰯が、
大カテゴリで果物を選択した場合は小カテゴリでみかん、りんご、バナナが選択できるようにしたい
と思っています。

そしてその選択したアイテムによって、変数に値が代入され
別に作ってあるマクロの変数に値を飛ばし、
そのマクロを実行させるようにしたいのです。

変数に値というのは、例えばじゃがいもを選択した場合には、
i=3,k=3 といった具合です。

また別に作ってあるマクロというのは、例えば鮭を選択した場合だったら、
その鮭の写真や詳細なデータをDBから拾いエクセル上に表示させるマクロです。
こちらのマクロはもう完成しております。

このようなシステムを作るのは可能でしょうか?
どなたかコードを具体的にご教示頂けましたら幸いです。
何卒宜しくお願い申し上げます。

A 回答 (1件)

> 別に作ってあるマクロの変数に値を飛ばし、


> そのマクロを実行させるようにしたいのです。

これは、そのマクロに引数で値を渡すって事で良いのでしょうか?

> 変数に値というのは、例えばじゃがいもを選択した場合には、
> i=3,k=3 といった具合です。
なぜ、「じゃがいも」がこの値になるのか解りませんでしたので、ListBox1とListBox2のListIndexの値(選択されているインデックス)を渡すようにしてみました。

Sheet1に添付の図の様な表を作成しておきます。
また、フォームのListBox1とListBox2のRowSourceプロパティには、それぞれ初期値として
Sheet1!A2:A4
Sheet1!C2:C4
を入れておいてください。

'ListBox1がクリックされたら小カテゴリの内容を変更する。
Private Sub ListBox1_Click()
  nSel = 1 + ListBox1.ListIndex
  sStr = "Sheet1!" & Range(Cells(2, nSel + 2), Cells(4, nSel + 2)).Address
  ListBox2.RowSource = sStr
  ListBox2.ListIndex = 0  
End Sub
'ボタンを押したら作成済みのマクロを起動する
Private Sub CommandButton1_Click()
  Call 作成済みのマクロ(ListBox1.ListIndex, ListBox2.ListIndex)
End Sub
「エクセルVBAでマクロを使ったシステムに」の回答画像1
    • good
    • 0
この回答へのお礼

お忙しいなかご回答頂きまして誠に有難うございます。
大変参考になりました。

お礼日時:2014/01/09 12:30

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