返回列表 上一主題 發帖

[發問] 分離單號

回復 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

回復 7# 准提部林


    謝謝論壇,謝謝前輩指導
後學藉此帖學到順迴圈裡逆著跑結果,這是後學這庸才從沒想過的,學習心得如下,請前輩再指導
執行前:


執行結果:



Option Explicit
Sub TEST_A1()
Dim Arr, i&, j%, Vr, TR
'↑宣告變數
Arr = Range([g1], [e65536].End(3))
'↑令Arr變數是二維陣列,以儲存格值帶入
Vr = Array("000-", "0000-", "000")
'↑令Vr變數是一維陣列
For i = 3 To UBound(Arr)
'↑設順迴圈i
    TR = Split(Arr(i, 1) & "--", "-")
    '↑令TR變數是一維陣列: Arr陣列值連接"--"成為新字串後,再以"-"分割該字串成
    '(索引號至少會有0~2)

    For j = 0 To 2
    '↑設順迴圈j
        Arr(i - 2, 3 - j) = IIf(IsNumeric(TR(j)), Format(TR(j), Vr(j)), "")
       '↑令原來的Arr陣列值從第1列開始寫入新陣列值
        'IIf():如果IsNumeric(TR(j))邏輯值是True,就回傳 Format(TR(j), Vr(j))字串,
        '否則回傳空字元
        'IsNumeric(TR(j)):TR陣列的j迴圈數索引號陣列值是不是數值?? 回傳True 或 False
        'Format(TR(j), Vr(j)):令TR陣列的j迴圈數索引號陣列值轉化成
        'Vr陣列的j迴圈數索引號陣列值規則的格式字串

    Next j
Next i
With [r3].Resize(UBound(Arr) - 2, 3)
'↑以下是關於[R3]儲存格擴展所需範圍儲存格的程序
     .NumberFormatLocal = "@"
     '↑令該範圍儲存格格式是 文字
     .Value = Arr
     '↑令該範圍儲存格值以Arr陣列值帶入
End With
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題