|
▼Mar さん:
こんばんは。
>すみません。興味を持ってみさせていただきました。
>で、質問させてください。
>
>このコードはシートに書くのでしょうか
>また、UserFormのコンボボックスを使うのでしょうか?
さて、どちらでしょうねえ??
以下のコード自体はユーザーフォームのモジュールでも
シートモジュールでもどちらでも作動しますよ。
(記述の仕方が良い悪いは別として)
例えば、新規ブックにユーザーフォーム(Userform1)を作成し
そのユーザーフォームに
コンボボックス(Combobox1)
コマンドボタン(Commandbutton1)
を一つずつ配置します。
Userform1のモジュールには、
'===================================================================
Option Explicit
'===================================================================
Private Sub UserForm_Initialize()
With ComboBox1
.Style = fmStyleDropDownList
.List() = Array("aaa", "bbb", "ccc", "ddd", "eee")
.ListIndex = 0
End With
End Sub
'===================================================================
Private Sub CommandButton1_Click()
Call commbobox1_
End Sub
'===================================================================
Private Sub commbobox1_()
Dim crng As Range
With ActiveSheet
For Each crng In .Range("e9,e13,e17,e21,e25")
If crng.Value = "" Then
crng.Value = ComboBox1.Value
Exit For
End If
Next
End With
End Sub
標準モジュールに
'====================================================
sub main()
userform1.show
end sub
というコードでmainを実行してみてください。
ユーザーフォームが表示されます。
コンボボックスで適当な文字を選択した後、
コマンドボタンをクリックしてみてください。
コマンドボタンをクリックすると
最初のクリックで セルE9に
次のクリックで セルE13に
・・・
・・・
という順序でコンボボックスで選択された文字が
コマンドボタンをクリックする度にセルに設定されます。
(e9,e13,e17,e21,e25の順です)
また、新たな新規ブックのSheet1というシートに
コマンドバー「コントロールツールボックス」にある
コンボボックス(Combobox1)と
コマンドボタン(Commandbutton1)を一つずつ配置してください。
上記のコントロールはセルe9,e13,e17,e21,e25にはかぶらないように
配置してください。
当該シートのシートモジュールに
'================================================================
Option Explicit
'=========================================================
Sub 設定()
With ComboBox1
.Style = fmStyleDropDownList
.List() = Array("aaa", "bbb", "ccc", "ddd", "eee")
.ListIndex = 0
End With
End Sub
'=========================================================
Private Sub CommandButton1_Click()
Call commbobox1_
End Sub
'=========================================================
Private Sub commbobox1_()
Dim crng As Range
With ActiveSheet
For Each crng In .Range("e9,e13,e17,e21,e25")
If crng.Value = "" Then
crng.Value = ComboBox1.Value
Exit For
End If
Next
End With
End Sub
これで一度だけ「設定」実行後、ユーザーフォームの時と同様に
コンボボックスで文字を選択後、コマンドボタンをクリックしてみてください。
コマンドボタンをクリックするたび毎に
セルe9,e13,e17,e21,e25の順にコンボボックスで選択された文字列が
設定されます。
これでcommbobox1_()というプロシジャーがユーザーフォームでもシートのモジュール
のいずれでも使えるということが分かるかと思います。
試してみてください。
>>private sub commbobox1_()
>> Dim crng As Range
>> With ActiveSheet
>> For Each crng In .Range("e9,e13,e17,e21,e25")
>> If crng.Value = "" Then
>> crng.Value = combobox1.Value
>> Exit For
>> End If
>> Next
>>
>> End With
>>End Sub
|
|