循环遍历单元格中的所有表格+文本到数字

时间:2018-06-15 06:44:49

标签: excel vba excel-vba

运行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

2 个答案:

答案 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”行。