簡體   English   中英

Microsoft Excel VBA文本拆分調整

[英]Microsoft Excel VBA text split tweak

我有一個Excel工作表,當使用空格字符作為分隔符將其掃描(通過即插即用條形碼掃描器)掃描到右側的第一列時,該宏使用宏將文本字符串拆分。 Excel工作表的示例圖片,后跟Excel宏。

擅長

Sub textsplit(rng As Range)
    Dim c As Range, Arr

    For Each c In rng.Cells
        If Len(c.Value) > 0 Then
            Arr = Split(c.Value, " ")
            c.Offset(0, 1).Resize(1, UBound(Arr) + 1).Value = Arr
        End If
    Next c
End Sub

現在所有這些都可以完美地工作,但是我需要對此進行一些調整。 我希望宏在第一個序列(“ CNA1234567”)之后跳過該列,並將其留為空白 如何調整此代碼以執行此操作?

該方法更加明確,將為您提供所有想要的控件。

Sub textsplit(rng As Range)
    Dim c As Range
    Dim r As Long
    Dim Arr As Variant

    For Each c In rng.Cells
        If Len(c.Value) > 0 Then

            r = c.Row

            Arr = Split(c.Value, " ")
            With Sheet1
                .Cells(r, 2).Value = Arr(0)
               '.Cells(r, 3).Value = <--- skipped 
                .Cells(r, 4).Value = Arr(1)
                .Cells(r, 5).Value = Arr(2)
                .Cells(r, 6).Value = Arr(3)
                .Cells(r, 7).Value = Arr(4)
                .Cells(r, 8).Value = Arr(5)
           End With
        End If
    Next c
End Sub

這有效:

Sub textsplit(rng As Range)
    Dim c As Range, Arr As Variant
    Dim i As Long

    For Each c In rng.Cells
        If Len(c.Value) > 0 Then
            Arr = Split(c.Value, " ")
            For i = 0 To UBound(Arr)
                c.Offset(0, IIf(i > 0, i + 2, i + 1)).Value = Arr(i)
            Next i
        End If
    Next c
End Sub

如果rng較大,則可以先關閉屏幕更新再重新打開。

3無論該列是多少,都請檢查您是否不在該列上。

Sub textsplit(rng As Range)
    Dim c As Range, Arr

    For Each c In rng.Cells
        If c.Column <> 3 Then
            If Len(c.Value) > 0 Then
                Arr = Split(c.Value, " ")
                c.Offset(0, 1).Resize(1, UBound(Arr) + 1).Value = Arr
            End If
        End if
    Next c
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM