Я написал макрос в VBA.В основном макрос будет искать информацию на одном листе и копировать значения (если критерии поиска имеют значение ИСТИНА) на другой лист.
Проблема:
Если я пойдуПосмотреть -> Макросы и выбрать макрос для запуска, он запускается и все делает правильно.
(вот в чем проблема) Если я затем связываю тот же макрос с кнопкой или использую «вызов» из другого макроса, он не выполняет все команды должным образом.В основном, некоторые критерии являются ИСТИННЫМИ, но макрос переходит и не копирует некоторую информацию.Ошибка постоянна, она всегда пересекает одну и ту же строку.
Я пытался запустить макрос по-разному.Это работает правильно, если я нахожусь в редакторе Visual Basic и нажимаю F5 внутри макроса.Это также хорошо работает, если я вызываю макрос в Excel, идущий в «View -> Macros» и выбираю макрос.
Когда я запускаю макрос, используя «Call» из другого макроса, или если я передаю макроснепосредственно к 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: как сказано выше, если я иду в «Просмотр -> Макросы» и выбираю макрос, он запускается без сбоев)