Я просто хочу спросить о том, как работает рабочий цикл и почему мой код не работает.
В основном мне нужно выполнить цикл, чтобы создать сводную таблицу данных из каждой рабочей таблицы в рабочей книге.
WS_Count = ActiveWorkbook.Worksheets.Count
For i = 1 To WS_Count
lastRow = Range("IB" & Rows.Count).End(xlUp).Row
ActiveCell.FormulaR1C1 = "=IF(AND(RC[-1]<=2,RC[-1]>=0),""Ok"",""Failed"")"
Range("ID2").Select
Selection.AutoFill Destination:=Range("ID2:ID" & lastRow)
If i Mod 2 = 0 Then
SrcData = ActiveSheet.Name & "!" & Range("A1:IF" & lastRow) _
.Address(ReferenceStyle:=xlR1C1)
Set sht = Sheets.Add
StartPvt = sht.Name & "!" & sht.Range("A1:C3") _
.Address(ReferenceStyle:=x1R1C1)
Set pvtCache = ActiveWorkbook.PivotCaches _
.Create(SourceType:=xlDatabase, SourceData:=SrcData)
Set pvt = pvtCache.CreatePivotTable(TableDestination:=StartPvt, _
TableName:="PivotTable1")
End if
Next i
Что происходит с моим кодом, так это то, что этот цикл назначает все, что я хотел назначить, используя эту формулу, но для части IF
он всегда выполняет код.Таким образом, после третьего цикла будет выдано сообщение об ошибке, в котором говорится, что источник сводной сводки не определен, поскольку таблица ActiveSheet пуста и в ней нет данных.
Что мне нужно, так это мой код, верно?Или как заставить оператор IF
работать, только если он правильный?