如果我手动运行宏,则可以使用,如果我使用“调用”功能进行调用,或者将其分配给按钮,则无法使用

时间:2019-02-19 10:12:39

标签: call commandbutton

我在VBA中编写了一个宏。 基本上,宏会在一张纸上搜索信息,然后将值(如果搜索条件为TRUE)复制到另一张纸上。

问题是:

  • 如果我转到“查看”->“宏”并选择要运行的宏,它将运行并正确执行所有操作。

  • (这是问题所在),如果我随后将同一宏链接到按钮,或者使用来自另一个宏的“调用”,则它不能正确执行所有命令。基本上,某些条件为TRUE,但是宏会跳转,并且不会复制某些信息。错误是恒定的,它总是跳相同的行。

我尝试以不同的方式运行宏。 如果我在Visual Basic编辑器中并在宏中按F5,它将正常工作。如果我在Excel的“视图->宏”中调用宏并选择该宏,也可以正常工作。

当我使用另一个宏中的“调用”来运行宏时,或者将宏直接传递给CommandButton时,它会跳过某些条件,并且不会复制所有信息。

Sub CopyData_Activation()
Dim swEnblSubFct As String

    Windows("Macro_FDCT_stConstDriveWuc.xlsm").Activate
    Sheets("HowTo_ConstDrive").Select

    AuswFile = Range("B4")
    OrigDatenFile = Range("B5")
    VarNumber = Range("B6")
    FolderName = Range("B7") & "\"

    Windows(AuswFile).Activate
    Sheets("OriginalDaten").Select
    Range("A7").Select
    Selection.End(xlDown).Activate
    linha = ActiveCell.Row

    Range("A7").Select
    Selection.End(xlToRight).Select
    coluna = ActiveCell.Column

    Var = VarNumber

    Ref = 0
    ll = 3      'line for rpm
    llx = 3     'line for other parameters

    For c = 4 To coluna
        Cells(5, c).Copy
        Sheets("Auswertung_Activation").Cells(ll, 1).PasteSpecial Paste:=xlPasteValues
        Cells(4, c).Copy
        Sheets("Auswertung_Activation").Cells(ll, 2).PasteSpecial Paste:=xlPasteValues
        llx = ll
        For l = 8 To linha
            Set Ref = Cells(l, 2).Find(Var)
            If Ref Is Nothing Then Ref = 0
            If Cells(l, 1) = "Pecd_DDATA_E.rpmTranInMaxWuc_PecdDUW (0)(0)" And Cells(l, c) <> "" And Ref <> 0 Then
                Cells(l, c).Copy
                Sheets("Auswertung_Activation").Cells(ll, 3) = Ref
                Sheets("Auswertung_Activation").Cells(ll, 7).PasteSpecial Paste:=xlPasteValues
            ll = ll + 1
            End If

            If Cells(l, 1) = "Pecd_IDATA.prctAccpMaxWuc_PecdIUC (0)(0)" Then
                prct = Cells(l, c) / 100
                Sheets("Auswertung_Activation").Cells(llx, 9) = prct
            End If

            If Cells(l, 1) = "Pecd_IDATA.tmpTranOilMaxWuc_PecdIUC (0)(0)" Then
                Cells(l, c).Copy
                Sheets("Auswertung_Activation").Cells(llx, 6).PasteSpecial Paste:=xlPasteValues
            End If

            If Cells(l, 1) = "Pecd_IDATA.tmsRpmTranInMaxWuc_PecdIUC (0)(0)" Then
                Cells(l, c).Copy
                Sheets("Auswertung_Activation").Cells(llx, 8).PasteSpecial Paste:=xlPasteValues
            End If

            If Cells(l, 1) = "Pecd_IDATA.swEnblSubFct_PecdIUC (0)(0)" Then
                swEnblSubFct = Left(Cells(l, c), 8) '.Copy
                Sheets("Auswertung_Activation").Cells(llx, 4) = Right(swEnblSubFct, 1)
                Sheets("Auswertung_Activation").Cells(llx, 5) = Right(Left(swEnblSubFct, 7), 1)
            End If

            Sheets("OriginalDaten").Select

        Next l
        c = c + 1

    Next c

    If ll < 4 Then ll = 5
    Sheets("Auswertung_Activation").Select
    Range(Cells(3, 4), Cells(3, 9)).Copy
    Range(Cells(3, 4), Cells(ll - 1, 9)).PasteSpecial Paste:=xlPasteFormats
    Range("D3").Select

End Sub

我希望当我从命令按钮中调用宏,或者在另一个宏中使用命令“调用”来调用宏时,该宏能够正确运行。

实际结果是该宏跳过了一些信息,并且没有复制到目标工作表中。 (PS:如前所述,如果我转到“查看->宏”,然后选择要正常运行的宏)

0 个答案:

没有答案