| 
    
     |  | 皆さん こんにちは。 
 教えていただいた下記コードですが、私には非常に高度に見えます。
 どうしても気になるので教えてください。
 
 (1)
 これは選択範囲の中で使用されているセルをまとめて、
 bbという名前の範囲を設定するということですよね。
 
 (2)
 これは、bbの範囲の各セルの値をまとめて一気にaaに代入するということですよね。
 このaaとはいったい何なのですか?? aaというオブジェクト??
 
 (3)
 UBound(aa, 1) この1はどう言う意味ですか??
 UBound(aa) これだったら 直感的にわかる気がするのですが。
 
 (4)
 ここより前はaaという記述しかなかったのに、
 どうして急にaa(i, 1)という記述に変わったのですか?
 
 (5)
 (2)の時もそうでしたが、どうしてaaにはValueがなくてbbにはあるのですか?
 
 (6)
 どうしてこの後処理は必要なのですか?
 aaには必要無いのですか?
 
 以上たくさん書きましたが、どのようなサイトあるいは本を見れば、このような
 高度?なコードについて勉強できますでしょか?
 
 どうかご教授ください。
 
 >  Dim i As Long
 >  Dim aa As Variant
 >  Dim bb As Range
 >
 >'  1,よけいな範囲は処理しない
 >  Set bb = Intersect(Selection, ActiveSheet.UsedRange) ←(1)
 >
 >'  2,セルへのアクセスはできるだけ少なく
 >  aa = bb.Value ←(2)
 >
 >  For i = 1 To UBound(aa, 1) ←(3)
 >    aa(i, 1) = StrConv(aa(i, 1), vbNarrow) ←(4)
 >  Next i
 >
 >  bb.Value = aa ←(5)
 >
 >  Set bb = Nothing ←(6)
 
 
 |  |