本帖最後由 yen956 於 2015-12-6 13:16 編輯
下列VBA中,有一段match須引用1維陣列,
故先將2維陣列先轉成1維陣列再引用(紅色部分),
請問紅色部分如何正確引用(如何精簡)?- Public arW, arL
- '取得寛度與長度界限的陣列, 供Match用
- Sub init()
- ReDim arW(3) As Integer
- ReDim arL(3, 3) As Integer
- Dim W1 As Integer, L1 As Integer
- arW(0) = Split(Cells(3, 3), "~")(1) '寛度的上限
- For W1 = 0 To 2
- arW(W1 + 1) = Split(Cells(W1 * 3 + 3, 3), "~")(0) '寛度按降冪排
- For L1 = 0 To 2
- arL(W1, L1) = Split(Cells(W1 * 3 + L1 + 3, 5), "~")(0) '長度按升冪排
- Next
- arL(W1, L1) = Split(Cells(W1 * 3 + L1 + 2, 5), "~")(1) '長度的上限
- Next
- End Sub
- Private Sub CommandButton1_Click()
- Dim I As Integer, J As Integer, arL2(3) As Integer
- Dim MHW, MHL, IDW As String, IDL As String
- init
- For I = 4 To [G4].End(xlDown).Row
- MHW = Application.Match(Cells(I, 8), arW, -1)
- IDW = Application.Index([B1:B11], MHW * 3, 1)
- [color=Red] For J = 0 To 3
- arL2(J) = arL(MHW - 1, J) '將2維陣列轉為1維陣列
- Next
- MHL = Application.Match(Cells(I, 9), arL2, 1)[/color]
- '長度代號分[D3:D5,D6:D9,D10:D12]三區
- IDL = Application.Index([D3:D5,D6:D8,D9:D11], MHL, 1, MHW)
- Cells(I, 10) = IDW & "_" & IDL
- Next
- End Sub
複製代碼 (註:VBA可正常運作)
For J = 0 To 3
arL2(J) = arL(MHW - 1, J) '將2維陣列轉為1維陣列
Next
MHL = Application.Match(Cells(I, 9), arL2, 1)
多條件判斷編製名稱1206.rar (11.7 KB)
|