|
问题A:
Range("a188").Resize(m, 11).Value = Crr 可以正确的执行程序
下面的代码为何不行?
nRow = .Range("d1048576").End(xlUp).Row
For i = 4 To nRow
Range("a" & i).Resize(m, 11).Value = Crr
问题B:
将行号赋值为变量,清空或删除行 该怎么表达呢?如图:
Rows("i:ds").Select
Selection.Delete Shift:=xlUp
原代码如下:
Sub aaa()
Dim wb As Workbook, nRow%, nRow2%, arr(), Crr(), m%, n%
Dim ds As Object
Set ds = CreateObject("Scripting.Dictionary")
Set wb = Workbooks.Open(ThisWorkbook.Path & "\杭州运通和乔电子总账 - 副本.xlsx")
With wb.Sheets(1)
nRow = .Range("d1048576").End(xlUp).Row
If nRow < 4 Then Exit Sub
arr = .Range("a1:t" & nRow).Value
End With
wb.Close False
ReDim Crr(1 To nRow, 1 To 11)
For i = 4 To nRow
If arr(i, 20) = "在库" Then
j = j + 1
n = ds(arr(i, 14))
If n = 0 Then
m = m + 1
ds(arr(i, 14)) = m
n = m
Crr(n, 2) = arr(i, 4)
Crr(n, 3) = arr(i, 8)
Crr(n, 4) = arr(i, 10)
Crr(n, 5) = arr(i, 13)
Crr(n, 6) = arr(i, 14)
Crr(n, 7) = arr(i, 19)
Crr(n, 8) = arr(i, 17)
Crr(n, 9) = arr(i, 20)
Crr(n, 1) = IIf(Crr(n, 2) <> "", j, "")
'If Range("b" & i) <> "" Then
'j = j + 1
'Range("a" & i) = j
End If
End If
Next
Application.EnableEvents = False
'Range("a71").Resize(m, 11).ClearContents
Rows("i:ds").Select
Selection.Delete Shift:=xlUp
Range("a188").Resize(m, 11).Value = Crr
Range("a" & i).Resize(m, 11).Value = Crr
End Sub
|
|