Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


44279 / 76732 ←次へ | 前へ→

【37474】Re:同じようなコードをまとめる
発言  ichinose  - 06/5/9(火) 8:32 -

引用なし
パスワード
   ▼HIRO さん:
おはようございます。


> With UF1
>   .T1-----
>   .T2-----
>   .T3-----
> End With
>と言うように書いているのですが、With 以下が多くなってくると
>同じことを書いているのが多くなるのでまとめることが出来ないかと
>思っております。変数を使ってみましたが、上手くできませんでした。
まず、これ、↑実際にどのように変数を使ってうまくいかなかったのか
記述するようにしてください。
直接のご質問内容に関しては、
frmLBにあるデータを移行するコントロールが10個程度なら、

Dim mycont As Variant

Private Sub UserForm_Initialize()
  mycont = Array(ComboBox1, ComboBox2, ListBox1)
’これは、3個の例ですが、10個でも同様です。

End Sub

'等と配列に格納すれば、

 For idx = 0 To 2
  UF1.Controls("T" & idx + 1).Text = mycont(idx).Text
  Next

こんなコードでよいと思います。
他には、frmLB内のコントロール名の命名を工夫するという方法です。

上記の例の

Combobox1 ---- FCtrl1
Combobox2 ---- FCtrl2
Listbox1 ----- FCtrl3

というオブジェクト名にします。

そうすると、
For idx = 1 To 3
 UF1.Controls("T" & idx).Text = Controls("FCtrl" & idx).Text
 Next

でOKですが・・・。
これは、検討していただくとして・・・。


ご質問を拝見して、

> With 以下が多くなってくると
>同じことを書いているのが多くなるのでまとめることが出来ないかと
>思っております。
これ、With以下だけでなく、場合によっては
UF1、UF2と処理を分けずに記述できそうなんです。
(そうしないと将来、例えばUF3、UF4、UF5なんて出てきた場合、
似たようなコードの記述を繰り返すことになりますよね?)


又、はっきりとは判断できませんが、
そもそもUF1、UF2とユーザーフォームを二つ用意する必要があるのか
という疑問もあります。

状況説明を詳細に記述すれば、
この辺りもすっきりするかもしれませんよ!!
2 hits

【37469】同じようなコードをまとめる HIRO 06/5/8(月) 22:01 質問
【37474】Re:同じようなコードをまとめる ichinose 06/5/9(火) 8:32 発言
【37477】Re:同じようなコードをまとめる Jaka 06/5/9(火) 11:33 発言
【37510】Re:同じようなコードをまとめる HIRO 06/5/9(火) 21:35 お礼
【37507】Re:同じようなコードをまとめる HIRO 06/5/9(火) 21:23 お礼
【37521】Re:同じようなコードをまとめる ichinose 06/5/9(火) 22:41 発言
【37534】Re:同じようなコードをまとめる HIRO 06/5/10(水) 20:30 お礼

44279 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free