返回列表 上一主題 發帖

VBA如何把字串中的英文字前插入空格?

回復 1# s13030029

請測試看看,謝謝

Sub test()
Dim Arr, i, x, T, j$, c
Arr = Range([A1], [A65536].End(3))
For i = 1 To UBound(Arr)
    j = Trim(Arr(i, 1))
    c = Len(j)
    For x = c To 2 Step -1
        T = UCase(Mid(j, x, 1))
        If Asc(T) > 64 And Asc(T) < 123 Then
            Arr(i, 1) = Replace(Arr(i, 1), T, " " & T)
        End If
   Next
Next
[B1].Resize(UBound(Arr), 1) = Arr
End Sub

TOP

本帖最後由 samwang 於 2022-8-25 09:38 編輯
回復  samwang
因為我這個是要處理同一儲存格中的字串,而且還有換行,所以在Arr的地方會有出錯。
s13030029 發表於 2022-8-25 08:38


Arr = Range([A1], [A65536].End(3)) 改成 Arr = [a1],for 循環移除,還有...,可以試著改看看,有問題再提出,謝謝

TOP

回復  samwang
請問Arr要怎樣才能抓跨行的資料呢?
因為在這行就出錯了
s13030029 發表於 2022-8-25 10:29


請再測試看看,謝謝
Sub test()
Dim Arr, a, T, i&, x, j%
Arr = Range([A1], [A65536].End(3).Offset(1, 0))
For i = 1 To UBound(Arr) - 1
    a = Split(Trim(Arr(i, 1)), Chr(10))
    For x = 0 To UBound(a)
        For j = 2 To Len(a(x))
            T = UCase(Mid(a(x), j))
            If Asc(T) > 64 And Asc(T) < 123 Then
                If Cells(i, 2) = "" Then
                    Cells(i, 2) = Replace(a(x), T, " " & T)
                Else
                    Cells(i, 2) = Cells(i, 2) & Chr(10) & Replace(a(x), T, " " & T)
                End If
            End If
        Next
    Next
Next
End Sub

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題