|
▼ichi さん:
> >> 変数の格納のしかたが解りません
> >具体的にお願いします
>出来たComboboxの中に存在する値をクリックして取得し、変数に格納
>この変数をExcel上のセルに書きたいのです
「変数」という言葉が、分かったようで分からないのですが、
つまり、↓こういうことですか?
フォームのComboBox(ドロップダウンのこと)でどれかのリストが
選択されたら、その選択アイテムをワークシート上のセルに表示する
▼もしそういうことだとすると、これはフォームのDropDownを
使わなくても、「入力規則」でできることですよね?
手順1. 「コード」シートの範囲に名前を定義しておく
「コード」シートのリスト範囲を選択
Ctrl+[F3]で(名前定義)
名前 myList ←好きな名前をつけてください
参照範囲 =コード!$B$4:$B$8
手順2. 入力規則を設定するシートの目的のセル(たとえば
Sheet1![A4] とします)を選択し、
メニュ−[データ]-[入力規則]-[設定]タブ
(入力値の種類)→ リスト
(元の値) → =myList
これだけで、[A4]セルがアクティブになれば myListという名前を
つけた範囲がDropDownにリストされていますから、そのどれかの
リストを選択すればただちに [A4]セルに選択されたアイテムが
代入されます。
▼これをシート上に置いた
フォームツールボックスのドロップダウンComboを使ってやろうと
すると、DropDown内のリストのどれかのアイテムが選択されたとき、
発生するイベントがない(コントロールツールボックスのComboBoxには
それがあります)ので、なんらかの代替手段を考えないといけません。
DropDown内のアイテムが選択されたときというタイミングを考慮に
入れなくてもよいのであれば、
さきほど↓のようにして作ったDropDown
> Sub AddDropDown()
> With ActiveSheet.DropDowns.Add(180, 20, 70, 15)
> .Name = "myCombo"
> .ListFillRange = "コード!$B$4:$B$7"
> .LinkedCell = "$B$4"
> .DropDownLines = 8
> End With
> End Sub
の .LinkedCell = "$B$4" が [B4]なので、
このCellに現在DropDownの何番目のリストが選択されているか
の情報が数値で入っていますから、
標準モジュールに
Sub SetDropDownValue()
Dim n As Long
n = [B4].Value
If n > 0 Then
[A4].Value = Excel.Range(DropDowns("myCombo") _
.ListFillRange).Item(n).Value
End If
End Sub
のように書いておき、手動で Sub SetDropDownValue() を呼び
出すことにより、[A4]セルに選択されているアイテムが転記で
きます。
▼ただ、↑は実際におやりになりたいことではないですよね?
最初の 入力規則のようなことがやりたいのであれば、もうちょ
っと工夫が必要です。
手順1. 標準モジュールに以下のプロシージャを書いておきます。
Sub myCombo_Change()
With ActiveSheet.DropDowns(Application.Caller)
ActiveSheet.Range("A4").Value = .List(.ListIndex)
End With
End Sub
手順2. シート上のDropDown (myCombo) を右クリック
マクロの登録メニューより マクロ名をうえの
「myCombo_Change」とします。
これだけです。で、DropDown内のどれかのアイテムを選択しま
すと、[A4]セルにその選択アイテムの値が代入されます。
いまやりたいことはどういうことかを再度吟味し、最適な方法を
選んでください。
|
|