谁能帮忙解释一下VBA代码

Dim arr, arr1, arr2()
Dim i, j, k, n
With ActiveSheet
arr = .Range("a1:f" & .Range("a65536").End(3).Row).Value
End With
For i = LBound(arr) To UBound(arr)
arr(i, 2) = Replace(arr(i, 2), ",", ",", , , vbTextCompare)
arr1 = Split(arr(i, 2), ",")
For j = LBound(arr1) To UBound(arr1)
n = n + 1
ReDim Preserve arr2(1 To 6, 1 To n)
For k = 1 To 6
arr2(k, n) = arr(i, k)
Next k
arr2(2, n) = arr1(j)
Next j
Next i
With Sheets.Add
.Cells(1, 1).Resize(n, 6) = Application.Transpose(arr2)
End With

Dim arr, arr1, arr2() '定义变量和动态数组
Dim i, j, k, n '定义变量
With ActiveSheet '块设置
  arr = .Range("a1:f" & .Range("a65536").End(3).Row).Value
  '将A列到F列全部数据赋值给变量,得到二维数组arr
End With '块结束
For i = LBound(arr) To UBound(arr)
'我觉得上标明显是1却要计算上标,但还是解释如下
'从上标循环到下标
  arr(i, 2) = Replace(arr(i, 2), ",", ",", , , vbTextCompare)
  '我觉得这句有不妥之处但还是解释如下
  '用","替换", "不分大小写
  arr1 = Split(arr(i, 2), ",") '以","为分割成一维数组
  For j = LBound(arr1) To UBound(arr1) '从上标循环到下标
    n = n + 1 '变量n+1
    ReDim Preserve arr2(1 To 6, 1 To n) '保留数据重定义数组
    For k = 1 To 6 '循环
      arr2(k, n) = arr(i, k) 'arr向arr2赋值
    Next k
    arr2(2, n) = arr1(j) 'arr1向arr2赋值
  Next j
Next i
With Sheets.Add '块设置
  .Cells(1, 1).Resize(n, 6) = Application.Transpose(arr2)
  '数组转置后赋值到指定单元格区域
End With '块结束

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-20
给指定的单元格设置指定的内容。
相似回答