返回列表 上一主題 發帖

[發問] 分離單號

Sub aaa()
r = Cells(Rows.Count, "E").End(3).Row

Dim ar
ReDim ar(3 To r, 1 To 3)
For i = 3 To r
x = Cells(i, "e")
If x <> "" Then
If Len(x) - Len(Replace(x, "-", "")) = 2 Then

x0 = Split(x, "-")
ar(i, 1) = "'" & x0(2)
ar(i, 2) = x0(1) & "-"
ar(i, 3) = x0(0) & "-"

End If
End If
Next

Range("r3").Resize(r - 2, 3) = ar
End Sub

TOP

回復 10# PJChen


關於抽象的問題 解決方式如下
先練習如何操作"新增監看式"
https://www.youtube.com/watch?v=SvUFa37qOXo
7:08秒

https://blog.gtwang.org/programming/excel-vba-debug-error-handling/

然後 開excel vba
輸入
Sub aa()
Dim ar, ar1
ar = Array(1, 2, 3)
ar1 = Array(1, 2, 3)
ReDim Preserve ar(1 To 3)
ReDim Preserve ar1(2 To 4)

Debug.Print ar(1)
Debug.Print ar1(1) '<--此行會出錯正常 請繼續看下去
End Sub

1.注意監看式 ar ,ar1的差別 請將左前方的 " 田 " 字符號點開 並判斷兩者空間編號的不同
2.是否ar1(1) 出現陣列超過範圍   代表沒有ar1(1)的位置
修改為ar1(2) 是否正常

另外可以試著加入
ar2=array(1,2,3)
redim Preserve ar2( 3)
會發現跟 redim Preserve ar( 1 to 3) 不一樣
因為
redim Preserve ar2( 3)
是縮寫
原始正確的寫法是
redim Preserve ar2(0 to 3)

結論:經過大量的使用經驗 反饋建議剛接觸者者盡量多嘗試 0 to n的寫法,
由於陣列的 區域設置大小(n to n)用法 很容易與儲存格欄列位號碼搭配 迴圈搭配
後續可以減少許多微調的步驟   也會較為工整直觀

若還是有疑惑 google 關鍵字"redim 1 to n 用法"

TOP

        靜思自在 : 君子如水,隨方就圓,無處不自在。
返回列表 上一主題