|
▼YN61 さん今晩は。kobasanです。
わたしは、VBA についてまだまだ勉強中です。
YN61 さんのコードは分かりやすく、自分の勉強の材料になると思って、今回作ってみただけです。むしろ、YN61 さんのコードから色々なことを勉強させてもらいました。
>肝心の部分だけでもコメントいただければありがたいのですが…
VBE のヘルプで ReDim を検索してみてください。
ReDim Preserve について次のような説明があります。
ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .
ReDim ステートメントの構文は、次の指定項目から構成されます。
指定項目 内容
Preserve 省略可能です。既存の配列に格納されている値を失うことなく、
配列の最後の次元の要素数を変更する場合に使用する、キーワードです。
>
>> '-----品名の無重複データ作成
>> With Sheets(1)
>> n = 0
>> For Each c In Range("B2", Sheets(1).Cells(65535, 2).End(xlUp))
>> If Application.CountIf(.Range("B2", c), c.Value) = 1 Then
>> n = n + 1
>> ReDim Preserve X(1 To n) >>ここが特に理解できません。
'↑
'配列の要素数を自由にに設定するためのものです
'配列に格納されている値を失うことなく、
'配列の最後に要素を追加します
>> X(n) = c.Value >>ここが特に理解できません
'↑
'CountIf が1なら品目がダブっていないので、
'抽出のキーワードとして配列に格納します。
'
>> End If
>> Next
>> End With
>>
Find や like を使った検索にこだわることなく、
要は検索したいキーワードを最初に全て調べて配列Xに格納し、
そのキーワードについて抽出を繰り返せばよいと考えただけです。
そのために、「品名の無重複データ作成」のブロックを作っただけです。
こんな説明で分かってもらえますでしょうか。
|
|