|
言葉が足らなかったので、付け足します
>その行がtextbox等で1行目とか3行目とか指定された場合に、
>その指定された配列から同じように探索するには、
>”探索範囲の先頭セル”下記の部分を変更すればいいのでしょうか?
>Cellsのセルが変化するということですよね?
>また、表から探索するとなると範囲も定義づけが必要となるのでしょうか?
>
>> '探索範囲の先頭セル位置を指定
>> With ActiveSheet.Cells(1, "A")
>> '列数を取得
>> lngColumns = .Offset(, 256 - .Column).End(xlToLeft).Column - .Column + 1
基本的には、其の通りだと思います
と書きましたが、私が直すとすれば、今回書いたコードの
「Private Sub ComboBox1_Change()」の中で書いている様にOffsetで指定します
With rngListTop
'列数を取得
lngColumns = .Offset(lngRow, 256 - .Column).End(xlToLeft).Column - .Column + 1
'この部分(以下4行)は、数表が有れば必要ないかも?
If lngColumns <= 1 And .Value = "" Then
MsgBox "参照データが有りません"
Exit Sub
End If
'探索範囲を変数に代入
Set rngScope = .Offset(lngRow).Resize(, lngColumns)
End With
理由は、本来、以下の部分は基準点の意味を持たせて有ります
(前回は、1行なので同じなのですが?)
'探索範囲の先頭セル位置を指定
Set rngListTop = Worksheets("Sheet1").Cells(1, "A")
其の意味は、今回の「A1:E3」の範囲が、
もし何かの理由で「B2:F4」に成った場合、行列を直接指定していると
コードの他の部分まで影響する可能性が有りますが、
今回の様にOffsetで指定すれば、以下の様にすれば事足ります
'探索範囲の先頭セル位置を指定
Set rngListTop = Worksheets("Sheet1").Cells(2, "B")
其の点を注意して下さい
|
|