如何在excel VBA中使数组为空

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”是错误的代码。 那么有人能告诉我如何使数组为空吗?

haifeng897 回答:如何在excel VBA中使数组为空

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2778.html

大家都在问