[英]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.