gpt4 book ai didi

vba - Excel VBA 文本转列

转载 作者:行者123 更新时间:2023-12-02 21:17:42 29 4
gpt4 key购买 nike

早上好,提前致谢,我正在尝试运行 VBA 宏,使我的最终用户能够将条形码扫描到 Excel 中,然后使用命令按钮使用文本到列 vba 宏将条形码拆分为其组件类型,然后将其分解为项目、第一页和最后一页框中的页面。由于有 3 种不同长度的条形码必须在不同的位置分割,作为权宜之计,我在工作簿中创建了 3 个选项卡,以便他们可以扫描和分解该项目。理想情况下,我希望能够在一张工作表上完成所有这些工作,并让编码识别需要拆分的内容和位置。下面是我必须为其中一个项目工作的编码,但它只能识别第一组数组,而不是后续的 3 组。任何人都可以告诉我如何添加额外的数组来分割不同的条形码,正确的位置

Sub BarcodeSplit()
On Error GoTo myEnd:

' BarcodeSplit Macro
'
' Keyboard Shortcut: Ctrl+b
'
ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select
ActiveCell.Select
ActiveCell.FormulaR1C1 = "Item"
ActiveCell.Offset(1, -1).Range("A1").Select
Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.TextToColumns Destination:=Range("B2"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 2), Array(10, 2), Array(17, 2), Array(28, 2)), _
FieldInfo:=Array(Array(0, 2), Array(10, 2), Array(17, 2), Array(28, 2)), _
FieldInfo:=Array(Array(0, 2), Array(14, 2), Array(21, 2), Array(32, 2)), _
FieldInfo:=Array(Array(0, 2), Array(13, 2), Array(20, 2), Array(31, 2)), _
TrailingMinusNumbers:=True
myEnd:
End Sub

下面是条形码的示例,以及文本到列分割的外观

FP10SS200011915113111022001131110240004 FP10ss2000  1191511 31110220011 31110240004
FP10D400000031256232508001662325120000 FP10D40000 0031256 23250800166 2325120000
FP10MDA-SS050000207496320374001463203745000 FP10MDA-SS05 0020749 63203740014 63203745000
FP10PCDSS050000005566801250501068012510006 FP10PCDSS0500 0000556 68012505010 68012510006

再次提前感谢大家。马丁

最佳答案

如果您执行我的评论,您的代码将如下所示。

Dim SelectedRange as Range
Dim Cell as Range

Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Set SelectedRange = Application.Selection
For each Cell in SelectedRange
If len(Cell) = 39 Then 'length of first barcode Then
Cell.TextToColumns Destination:=Range(Cell), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 2), Array(10, 2), Array(17, 2), Array(28, 2)), _

TrailingMinusNumbers:=True

ElseIf len(Cell) = ?? Then'length second barcode Then
Cell.TextToColumns Destination:=Range(Cell), DataType:=xlFixedWidth, _
FieldInfo:=Array( 'Enter array here

TrailingMinusNumbers:=True

ElseIf len(Cell) = ?? Then'length third barcode Then
Cell.TextToColumns Destination:=Range(Cell), DataType:=xlFixedWidth, _
FieldInfo:=Array( 'Enter array here

TrailingMinusNumbers:=True
End If
Next Cell
myEnd:
End Sub

关于vba - Excel VBA 文本转列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112689/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com