我在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:如前所述,如果我转到“查看->宏”,然后选择要正常运行的宏)