|
いつも皆様には大変お世話になっております、ありがとう御座います。
今回、変数の受け渡しについて教えて頂けないかと投稿させて頂きました。
まだまだ力不足で無駄なコードが多いとは思いますが生暖かい目で見ていただけると幸いです。
下記のコードで、userform2のlistbox1にuserform1のcombobox1で検索したmykekkaのoffsetを反映させました。
この後ですが、変数rangid(rangidno)をuserform2のlistbox1で再度使いたいと思い自分なりに調べてみたのですが全く要領を得ることができません。
ぜひ配列変数の受け渡し方法について教えて頂けないでしょうか、よろしくお願いいたします。
Private Sub ComboBox1_Change()
Dim mykekka As Range
Dim rangidno As Byte, rangid() As Variant
UserForm2.ListBox1.Clear
If Me.ComboBox1 <> "" Then
With ThisWorkbook.Worksheets("○○").Range("b:b")
Set mykekka = .Find(what:=ComboBox1, _
lookat:=xlWhole, _
SearchOrder:=xlByColumns, _
MatchCase:=False, _
MatchByte:=False)
'〜〜同一があった場合〜〜
If Not mykekka Is Nothing Then
first = mykekka.Address
Do
'〜〜ReDimの為のカウント〜〜
rangidno = rangidno + 1
'〜〜変数rangidの要素数の変更(前に格納したデータを消さずに)〜〜
ReDim Preserve rangid(rangidno)
'〜〜変数rangidに見つかったセルを格納〜〜
rangid(rangidno) = mykekka.Address
Set mykekka = .FindNext(After:=mykekka)
Loop Until mykekka.Address = first
'〜〜userform2に格納したデータを反映〜〜
With UserForm2
With .ListBox1
.ColumnCount = 2
.ColumnWidths = "45;45"
For i = 1 To rangidno
.AddItem
.List(i - 1, 0) = StrConv("part.no." & ThisWorkbook.Worksheets("○○") _
.Range(rangid(i)).Offset(0, 1), 3)
.List(i - 1, 1) = StrConv("rev.no." & ThisWorkbook.Worksheets("○○") _
.Range(rangid(i)).Offset(0, 2), 3)
Next i
End With
.StartUpPosition = 0
.Top = UserForm1.Top
.Left = UserForm1.Left + 145
.Show (vbModeless)
End With
|
|