Board logo

標題: 程式出錯 [打印本頁]

作者: mdr0465    時間: 2024-7-30 23:09     標題: 程式出錯

各位大大,你好

我參考了另一位學兄的答案修改了內容放在我的工作表里, 但小弟不才某幾個位置都是不明白怎樣可以修改,請各位賜教
作者: mdr0465    時間: 2024-7-31 07:13

補充多一點,我目的是想每一個訂單號,款號,長,闊,高,歸類再將重量和cmb加總,謝謝
作者: Andy2483    時間: 2024-7-31 09:58

回復 1# mdr0465


    謝謝前輩發表此主題與範例
以下練習方案請前輩參考

Option Explicit
Sub Test_a1()
Dim Arr, Brr(1 To 10000, 1 To 10), xD, T$, i&, j%, N&, R&
Sheets("Result").UsedRange.ClearContents
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([Inventor!x1], [Inventor!a65536].End(3))
For i = 4 To UBound(Arr)
    If Not IsNumeric(Arr(i, 1) & "") Then GoTo i01
    T = Arr(i, 3) & "\" & Arr(i, 4) & "\" & Arr(i, 9) & "\" & Arr(i, 10) & "\" & Arr(i, 11)
    R = xD(T)
    If R = 0 Then
       N = N + 1: xD(T) = N: Brr(N, 1) = N: R = N
       For j = 2 To 10
          Brr(N, j) = Arr(i, Val(Split("//3/4/5/6/8/9/10/11/12", "/")(j)))
       Next
       GoTo i01
    End If
    Brr(R, 5) = Val(Brr(R, 5)) + Val(Arr(i, 6))
    Brr(R, 6) = Val(Brr(R, 6)) + Val(Arr(i, 8))
    Brr(R, 10) = Val(Brr(R, 10)) + Val(Arr(i, 12))
i01: Next i
If N = 0 Then Exit Sub
With [Result!a2:J2].Resize(N)
     .Rows(1).Copy .Cells
     .Value = Brr
     .Columns(2).Resize(, 9).Sort Key1:=.Item(2), Order1:=xlAscending, Header:=xlNo
End With
End Sub
作者: mdr0465    時間: 2024-8-1 12:22

回復 3# Andy2483

謝謝Andy師兄出手相助, 但我細心學習當中的程式中, 有一個不明的地方,希望Andy 兄賜教

   Sub Test_a1()
Dim Arr, Brr(1 To 10000, 1 To 10), xD, T$, i&, j%, N&, R&
Sheets("Result").UsedRange.ClearContents
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([Inventor!x1], [Inventor!a65536].End(3))
For i = 4 To UBound(Arr)
    If Not IsNumeric(Arr(i, 1) & "") Then GoTo i01
    T = Arr(i, 3) & "\" & Arr(i, 4) & "\" & Arr(i, 9) & "\" & Arr(i, 10) & "\" & Arr(i, 11)
    R = xD(T)
    If R = 0 Then
       N = N + 1: xD(T) = N: Brr(N, 1) = N: R = N
       For j = 2 To 10
          Brr(N, j) = Arr(i, Val(Split("//3/4/5/6/8/9/10/11/12", "/")(j)))
       Next
       GoTo i01
    End If
    Brr(R, 5) = Val(Brr(R, 5)) + Val(Arr(i, 6))
    Brr(R, 6) = Val(Brr(R, 6)) + Val(Arr(i, 8))
    Brr(R, 10) = Val(Brr(R, 10)) + Val(Arr(i, 12))
i01: Next i
If N = 0 Then Exit Sub
With [Result!a2:J2].Resize(N)
     .Rows(1).Copy .Cells
     .Value = Brr
     .Columns(2).Resize(, 9).Sort Key1:=.Item(2), Order1:=xlAscending, Header:=xlNo
End With
End Sub


我在網上找到的應用資料是 Split("//3/4/5/6/8/9/10/11/12", "/",j), 但為何andy 學兄會用到(Split("//3/4/5/6/8/9/10/11/12", "/")(j)
請賜教,謝謝
作者: Andy2483    時間: 2024-8-1 13:47

回復 4# mdr0465


    請參考以下鏈結
https://learn.microsoft.com/zh-t ... help/split-function
作者: mdr0465    時間: 2024-8-1 20:46

回復 5# Andy2483


    Andy  兄,謝謝你提供有用資料給我參考, 謝謝




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)