У меня около 10 дней опыта работы с VBA Excel, поэтому прошу прощения за мои ошибки / невежество. Кроме того, я, вероятно, не могу найти решение, так как я не знаю язык, поэтому мои вопросы не имеют смысла. мои запросы возвращают в основном «как назвать диапазон, используя VBA в Excel».
Я создаю рабочую книгу, в которой содержатся результаты испытаний контрольных деталей, которые компания, для которой я работаю, производит. Есть 28 частей с 6 критериями производительности каждая.
Я пытаюсь «захватить» значение для каждой части и параметра, которые будут использоваться в формуле условного форматирования: '= rnSource +/- (rnSource * Tolerance)' ,
Каждый номер детали имеет результаты SN и 6 контрольных точек (TP). Я назвал диапазоны (отдельные ячейки) как SN_TPx (x, будучи 1, 2, 3, ... 6). Эти именованные ячейки находятся в другом листе, чем целевые листы условного форматирования (28 из них 1 / SN). Отдельный лист содержит результаты текущего прогона (листы названы с использованием SN). Приведенный ниже код работал нормально, когда я использовал SN_TPx
вместо rnSource
.
Причина: я могу повторно использовать код с модификацией одного "тусклого", а не копировать / вставлять код 168 раз и изменять ссылки на ячейки по код (8 вхождений). У меня также есть 7 других продуктовых линеек, к которым мне нужно будет применить это.
В своем коде я попытался: Dim rnSource As Range
, затем присвоить SN_TPx
to rnSource
, используя Set rnSource = SN_TPx
. Это приводит к: «Ошибка времени выполнения« 424 »: требуется объект»
За последние 12 часов я пытался найти решение в сети безрезультатно.
Я пытался использовать rnSource =
: SN_TPx.Value
- ошибка «424»
Range(SN_TPx).Value
- ошибка времени выполнения «1004»: сбой метода «Диапазон» объекта «_Global»
Range("SN_TPx").Value
- код работает, но ... моя формула условного форматирования приводит к следующему: "Значение ячейки
Worksheet("Sheet3").Range(SN_TPx)
- Ошибка компиляции: Sub или функция не определена (рабочая таблица)
Worksheets("Sheet3").Range("SN_TPx")
- Ошибка времени выполнения '9': индекс вне диапазона
Я пробовал другой фрагменты кода, которые я больше не помню, но я уверен, что есть простое решение, если кто-то знаком с VBA, которого мне не хватает.
Код ниже:
Sub TP1_CondFormat_AV()
'*** Attempt to handle ranges (source and target) of CondFormat by setting dims and ranges upfront_
' then execute CondFormat routine for each set of dims and ranges
With ActiveSheet
'** par - define needed variables
Dim r1 As Range
Dim r2 As Range
Dim TP1_Range As Range
Dim TP2_Range As Range
'Dim rnSource As Variant ' fail
'Dim rnSource As Integer ' fail
Dim rnSource As Range
Dim rnTarget As Range
Dim wsSource As Worksheet
Dim wsTarget As Worksheet
'*** par - create a range called "rnTarget" which consists of r1 and r2 ranges
Set r1 = Range("L2:L4")
Set r2 = Range("L7:L1048576")
Set rnTarget = Union(r1, r2)
rnTarget.Name = "TP1" 'Name the rnTarget as "TP1"
Set rnSource = Range(SN_TP1).Value '== troubleshooting, unable to point rnSource to "SN_TP1" value
End With
rnTarget.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="=rnSource-(rnSource*Tolerance)"
rnTarget.FormatConditions(rnTarget.FormatConditions.Count).SetFirstPriority
With rnTarget.FormatConditions(1).Font
.Bold = True
.Color = -4165632
.TintAndShade = 0
End With
rnTarget.FormatConditions(1).StopIfTrue = False
rnTarget.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="=rnSource+(rnSource*Tolerance)"
rnTarget.FormatConditions(rnTarget.FormatConditions.Count).SetFirstPriority
With rnTarget.FormatConditions(1).Font
.Bold = True
.Color = -16776961
.TintAndShade = 0
End With
rnTarget.FormatConditions(1).StopIfTrue = False
End Sub
Спасибо, что уделили мне драгоценное время,
Павел