Sub WriteToZeroBasedArray()
Dim E As Integer
Dim rCount As Long: rCount =
Worksheets("0618").Cells.SpecialCells(xlLastCell).Row
For E = 9 To rCount
Dim V() As Variant ' Note the parentheses!
Dim P() As Variant
Dim N() As Variant
Dim Index As Long
Dim Index_2 As Long
Dim Index_3 As Long
Dim cCount As Long: cCount = Worksheets("0618").Cells.SpecialCells(xlLastCell).Column ' e.g.
Dim c As Long '배열에 값 저장하기
For c = 7 To cCount
If 0 < Worksheets("0618").Cells(E,c).Value And Worksheets("0618").Cells(E,c).Value < 100 Then
ReDim Preserve V(Index)
' A safer way (Option Base related):
'ReDim Preserve V(0 To Index)
V(Index) = Worksheets("0618").Cells(2,c).Value
Index = Index + 1
ReDim Preserve P(Index_2)
P(Index_2) = Worksheets("0618").Cells(4,c).Value
Index_2 = Index_2 + 1
ReDim Preserve N(Index_3)
N(Index_3) = Worksheets("0618").Cells(E,c).Value
Index_3 = Index_3 + 1
End If
Next c
Dim K As Integer
Dim L As Integer
K = UBound(V) '배열의 값 차례로 Sheet2에 넣기
For L = 0 To K
If L < 5 Then
Worksheets("sheet2").Cells(L + 6 + 14 * (E - 9),1).Value = V(L)
Worksheets("sheet2").Cells(L + 6 + 14 * (E - 9),2).Value = P(L)
Worksheets("sheet2").Cells(L + 6 + 14 * (E - 9),3).Value = N(L)
Else
Worksheets("sheet2").Cells(L + 1 + 14 * (E - 9),5).Value = V(L)
Worksheets("sheet2").Cells(L + 1 + 14 * (E - 9),6).Value = P(L)
Worksheets("sheet2").Cells(L + 1 + 14 * (E - 9),7).Value = N(L)
End If
Next
Dim FP As Integer
Dim Sum As Integer
Sum = 0
'수량*단가 구하기
For FP = (6 + 14 * (E - 9)) To (10 + 14 * (E - 9))
Worksheets("sheet2").Cells(FP,4).Value = Worksheets("sheet2").Cells(FP,2).Value * Worksheets("sheet2").Cells(FP,3).Value
Worksheets("sheet2").Cells(FP,8).Value = Worksheets("sheet2").Cells(FP,6).Value * Worksheets("sheet2").Cells(FP,7).Value
'총액 구하기
Sum = Sum + Worksheets("sheet2").Cells(FP,4).Value + Worksheets("sheet2").Cells(FP,8).Value
'0 지우기
If Worksheets("sheet2").Cells(FP,4).Value = 0 Then
Worksheets("sheet2").Cells(FP,4).ClearContents
End If
If Worksheets("sheet2").Cells(FP,8).Value = 0 Then
Worksheets("sheet2").Cells(FP,8).ClearContents
End If
Next
'총액 구하기2
Worksheets("sheet2").Cells(12 + 14 * (E - 9),8).Value = Sum
'받으실 분
Worksheets("sheet2").Cells(3 + 14 * (E - 9),2).Value = Worksheets("0618").Cells(E,3).Value
'주소
Worksheets("sheet2").Cells(3 + 14 * (E - 9),5).Value = Worksheets("0618").Cells(E,2).Value
'서식 복사'
Worksheets("sheet3").Range("A1:H13").Copy
Worksheets("sheet2").Range("A" & 15 + 14 * (E - 9)).PasteSpecial
Erase V,P,N
If Index = 0 Then Exit Sub
Next
Debug.Print Join(V,vbLf)
End Sub
我在这段代码的最后一部分使用了“擦除 V、P、N”来将 V、P、N 变成空数组,因为代码必须从 E = 9 重复到 E = 列号,并且随着它重复,这些数组必须在代码的最后部分连续为空,以便在下一次重复时再次使用它们。 但是当我运行这段代码时,这些数组不会变空。随着代码的重复,这些值会越来越多地累积。我想也许代码“擦除 V、P、N”是错误的代码。 那么有人能告诉我如何使数组为空吗?