繁体   English   中英

为什么在 VBA 中单独工作时多个潜艇不能一起工作?

[英]Why don't multiple subs work together while do individually in VBA?

我正在编写一个宏来做几件事。 我的目标是导入一个表,然后将其复制到同一个文件中的 3 个不同的工作表中。 毕竟我想和我的潜艇一起安排那 4 张桌子。 由于我在一个文件中有 4 张工作表,因此我需要为每张工作表编写一个单独的子表。

最后,我想将它们分配给一个名为 All() 的完整子组件。 但是当我这样做时,我的宏进入无限循环。

我试图单独运行它们并且它们工作正常。 但是我不知道为什么它们一起运行时不起作用。 这是我的代码:

Sub Format_1()

    Sheets(1).Range("H2") = "P Axial"

    Dim delete_list(7) As String

    delete_list(0) = "Absolute Distance"
    delete_list(1) = "V2"
    delete_list(2) = "V3"
    delete_list(3) = "T"
    delete_list(4) = "U1 Plastic"
    delete_list(5) = "U2 Plastic"
    delete_list(6) = "U3 Plastic"
    delete_list(7) = "R1 Plastic"

    i = 1

    Do While Sheets(1).Cells(2, i) <> ""

        If IsInArray(Sheets(1).Cells(2, i), delete_list) Then
            Columns(i).EntireColumn.Delete
            i = i - 1
        End If

        i = i + 1
    Loop

End Sub

Sub All()

    Call Format_1
    Call Format_2
    Call Format_3
    Call Format_4

End Sub

此代码将以相同的方式针对 4 个不同的工作表运行。 唯一的变化将是 Sheets(2)、Sheets(3)、Sheets(4) 而不是 Sheets(1)。

我想知道为什么他们不一起工作而单独做。 提前致谢。

PS:IsInArray 是一个 function,它检查是否在数组中看到了字符串。

您需要为宏工作使用工作表引用,因为它将默认激活什么,但激活的将是您在运行宏时拥有的任何内容。

尝试这个。

Sub Format_1()

    Sheets(1).Range("H2") = "P Axial"

    Dim delete_list(7) As String

    delete_list(0) = "Absolute Distance"
    delete_list(1) = "V2"
    delete_list(2) = "V3"
    delete_list(3) = "T"
    delete_list(4) = "U1 Plastic"
    delete_list(5) = "U2 Plastic"
    delete_list(6) = "U3 Plastic"
    delete_list(7) = "R1 Plastic"

    i = 1

    Do While Sheets(1).Cells(2, i) <> ""

        If IsInArray(Sheets(1).Cells(2, i), delete_list) Then
            'I added the Sheet reference, but do this for all of your macros
            Sheets(1).Columns(i).EntireColumn.Delete 
            i = i - 1
        End If

        i = i + 1
    Loop

End Sub

Sub All()

    Call Format_1
    Call Format_2
    Call Format_3
    Call Format_4

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM