我想從一列字串中洗掉左邊的字符而不遍歷每個單元格,但我在 Excel 中遇到錯誤。這是我的代碼,我可以在沒有 for 回圈的情況下執行此操作嗎?
Public Sub TestRngAdjust()
Dim TestRNG As Range
Set TestRNG = Range("A1:A5")
TestRNG.NumberFormat = "@"
TestRNG.Value = Right(TestRNG.Value, Len(TestRNG.Value) - 1)
End Sub
uj5u.com熱心網友回復:
如果你不想回圈:
Dim s As String
s = "RIGHT(" & TestRNG.Address & ",LEN(" & TestRNG.Address & ") - 1)"
TestRNG.Value = TestRNG.Parent.Evaluate(s)
但實際上,將資料讀入Variant陣列,Right在每個元素上使用,然后將陣列寫回范圍非常容易。
uj5u.com熱心網友回復:
回圈也不錯。在作業表上回圈范圍時它們很糟糕。使用變體陣列進行回圈。
使用 Variant 方法:
- 將范圍加載到變體陣列中。
- 回圈陣列并進行更改。
- 將變體陣列資料分配回范圍。
Public Sub TestRngAdjust()
Dim TestRNG As Range
Set TestRNG = Range("A1:A5")
Dim rngarr As Variant
rngarr = TestRNG.Value
Dim i As Long
For i = 1 To UBound(rngarr, 1)
rngarr(i, 1) = Mid$(rngarr(i, 1), 2)
Next i
TestRNG.NumberFormat = "@"
TestRNG.Value = rngarr
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372340.html
