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

初心者です。初歩的な質問でお恥ずかしいのですが、コンボボックス用のコードを
記述するには「Private Sub UserForm_Initialize()」の下に記述するしかないのでしょうか。

例えば、縦長のユーザーフォームに上からコンボボックス1、コマンドボタン、コンボボックス2を
配置した場合、コードの記述をコンボボックス1の処理、コマンドボタンの処理、コンボボックス2の処理と、順番通りに記述することは出来るのでしょうか?

現在はこのようにコードを記述しています。

Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "赤色"
.AddItem "青色"
.AddItem "黄色"
End With
With ComboBox2
.AddItem "緑色"
.AddItem "黒色"
.AddItem "紫色"
End With
End Sub

Private Sub CommandButton1_Click()
MsgBox "テスト"
End Sub

本当であれば、下記のように順番通りに記述したいです。

Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "赤色"
.AddItem "青色"
.AddItem "黄色"
End With
End Sub

Private Sub CommandButton1_Click()
MsgBox "テスト"
End Sub

With ComboBox2
.AddItem "緑色"
.AddItem "黒色"
.AddItem "紫色"
End With
End Sub

With ComboBox2の上に、必要なコードを記述すればできるのでしょうか。

ご教示下さい。

A 回答 (2件)

>本当であれば、下記のように順番通りに記述したいです。



プロシージャ(sub , function)の中に別のプロシージャを置くことはできません。
どうしても順番に記述したいのであれば可能ですが、順番に記述することの意義はないと私は思います。

見やすくするため全角スペースでイデントしています
Private Sub UserForm_Initialize()
 SetCommbo1
 SetCommbo2
End Sub

Private Sub SetCommbo1()
 With ComboBox1
  .AddItem "赤色"
  .AddItem "青色"
  .AddItem "黄色"
 End With
End Sub

Private Sub CommandButton1_Click()
 MsgBox "テスト"
End Sub

Private Sub SetCommbo2()
 With ComboBox2
  .AddItem "緑色"
  .AddItem "黒色"
  .AddItem "紫色"
 End With
End Sub
    • good
    • 0
この回答へのお礼

なるほど、こんな方法があるのですね。
「出来ないのかも」と思っていたのですが詳しい方は様々な方法をご存じだ…。

確かにご教示頂いたコードですと逆に時間がかかってしまいそうなので、今まで通り進めてみます。
(せっかく直して頂いたのにすみません)
「セットして呼び出す」という新たな知識も頂戴できて、大満足です。

ありがとうございました!

お礼日時:2014/10/14 15:11

コマンドボタンの代わりに Form_Load() イベントを使って



Private Sub Form_Load()
MsgBox "テスト"
UserForm_Initialize
End Sub

Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "赤色"
.AddItem "青色"
.AddItem "黄色"
End With

With ComboBox2
.AddItem "緑色"
.AddItem "黒色"
.AddItem "紫色"
End With
End Sub
    • good
    • 0
この回答へのお礼

Form_Load() イベント…
初めて知りました。勉強になります。

ご教示、ありがとうございました!

お礼日時:2014/10/14 14:58

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