Диапазон задан...
Впрочем приведу полный текст программы:
И для пояснения замечу, что имеетбся три вкладки: одна "Старт" (здесь задаются стартовые значения), другая "Таблица" (где находится сама сводная таблица), и третья "Данные" (куда выбрасываются данные после обработки SQL-запроса)
Private Sub Worksheet_Activate()
If Range("R1").Value = 1 Then
If Sheets("Старт").Range("E3").Value = "Подождите" Then
MsgBox ("Пожалуйста, подождите, идет расчет")
Sheets("Старт").Select
Exit Sub
End If
Application.ScreenUpdating = False
Range("R1").Value = ""
Sheets("Данные").Select
ActiveCell.SpecialCells(xlLastCell).Select
R = Selection.Row
C = Selection.Column
Set RR = Worksheets("Данные").Range("A1:BA1")
While (C > 1) And (RR.Cells(R, C).Value = "")
C = C - 1
Wend
B = "Данные!R1C1:R" & R & "C" & C
Sheets("Таблица").Select
ActiveSheet.PivotTables("Сводная таблица1").SourceData = B
ActiveSheet.PivotTables("Сводная таблица1").RefreshTable
Application.CommandBars("PivotTable").Visible = False
ActiveSheet.PivotTables("Сводная таблица1").PivotFields("Дата").NumberFormat = _
"m/d/yyyy"
ActiveSheet.PivotTables("Сводная таблица1").PivotSelect "'9. Нарушения'" _
, xlDataAndLabel, True
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, _
Formula1:="4"
Selection.FormatConditions(1).Interior.ColorIndex = 35
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="5", Formula2:="9"
Selection.FormatConditions(2).Interior.ColorIndex = 36
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual _
, Formula1:="10"
Selection.FormatConditions(3).Interior.ColorIndex = 38
Range("A11").Select
End If
End Sub
Это для листа "Таблица"...
описание процедуры для вкладки "Старт" я давать не буду, там считываются входящие данные, формируется SQL строка и запускается, а также устанавливается:
Worksheets("Таблица").Range("R1") = 1
А по поводу второго (пустая ячейка) не совсем понял... Можно поподробнее?