お世話になっております。
任意の数(今回は3個)のListViewコントロールを用意し、
・それぞれに入るデータはD&Dで行き来することができる
というフォームを作りたいと考えています。
.ColumnHeaders.Addメソッドに渡したい要素は決まっており、
ListViewが増えても同じ処理をすることになる。
それぞれのListViewオブジェクトに一つずつAddしていくのは冗長なので、
Addする内容はどこかでまとめて
ListViewオブジェクトが生成されたら最初から適用するようにしたい。
- で、実際なんて書いたらいいの?
というのが本質問です。
このプロジェクトではListView1~3を用意し、それぞれでColumnHeaders.Addしているため、どう考えても無駄です。
VBA
1Private Sub UserForm_Initialize() 2 3 With ListView1 4 .ColumnHeaders.Add , "Lot", "LOT No.", 40 5 .ColumnHeaders.Add , "Thickness", "THI", 25, lvwColumnRight 6 .ColumnHeaders.Add , "Length", "LENGTH", 45, lvwColumnRight 7 .ColumnHeaders.Add , "Width", "WIDTH", 40, lvwColumnRight 8 '他に幅ゼロで追加される要素が10個程(見る側、操作する側には必要のない項目) 9 '.ColumnHeaders.Add , "○○", "●●", 0, lvwColumnRight 10 11 'とりあえず見た目獲得のために入れてます 12 With .ListItems.Add 13 .Text = "T47-1" 14 .SubItems(1) = 15 15 .SubItems(2) = 2445 16 .SubItems(3) = 1225 17 .SubItems(4) = "L" 18 '..... 19 End With 20 21 With .ListItems.Add 22 .Text = "T47-2" 23 .SubItems(1) = 12 24 .SubItems(2) = 2450 25 .SubItems(3) = 920 26 End With 27 28 With ListView2 29 'ListView1と同じく十数行... 30 End With 31 32 With ListView3 33 'ListView1と同じく十数行... 34 End With 35 36 End With
- ↑このままではFunctionに書き逃がしてもそのままでしかない
VBA
1.ColumnHeaders.Add , "○○", "●●", 0, lvwColumnRight
- ↑ListViewを増やしても、これは変わらないのでどこか1箇所で宣言しておきたい
オブジェクト名以外はすべて同じなので共通化したいのですが、具体的にどのような記述、処理をすればいいのでしょうか?
D&Dする処理はまだ考えていません。
クラスモジュールを使った経験もなく、自力ではまだまだ冗長でスパゲッティな関数型コードしか書けないため、質問させて頂きました。
どうかよろしくお願い致します。
とりあえず現状の「どう考えても無駄」と思われているコードを提示されては。クラスモジュールを使うことになると思いますので、WEBで「VBA クラスモジュール」を検索して基本を学習しておくと回答がついたとき理解しやすいと思います。

回答1件
あなたの回答
tips
プレビュー