运行Excel工作表,计算开关柜的零件数量。该计算的数据从名为“E-Plan”的第三方程序导出。 在第一列(A)中显示产品编号。在第二列中,显示每个文件柜的数量,但格式化为文本。我编写了一个短宏,应该循环遍历工作簿的每个工作表,除了名称为“Übersicht”,“Rechner”或“Bestellmenge”的工作簿,并将列“B”的格式更改为“Zahl”或Numbers。但是,宏只能通过表单进行循环,甚至通过表格也不应该循环通过。
Sub Test()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name = "Übersicht" Or _
ws.Name = "Rechner" Or _
ws.Name = "Bestellmenge" Then
Else
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
End If
Next ws
End Sub
答案 0 :(得分:1)
试试这个......
Sub Test()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Überischt" And ws.Name <> "Rechner" And ws.Name <> "Bestellmenge" Then
ws.Columns("B").TextToColumns Destination:=ws.Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
End If
Next ws
End Sub
答案 1 :(得分:0)
Columns("B:B").Select
...正在ActiveSheet上运行。你想要:
ws.Columns("B:B").Select
此外,您的“Then”和“Else”语句之间没有任何内容。因此,如果工作表名称是您命名的3个名称之一,则不会发生任何事情。只有当工作表不是其中一个时,您的操作才会执行!这是你的意图吗?如果没有,删除“Else”行。