| 
    
     |  | ▼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]セルにその選択アイテムの値が代入されます。
 
 
 いまやりたいことはどういうことかを再度吟味し、最適な方法を
 選んでください。
 
 |  |