/ / Умовний код заповнення комірок, який слід застосувати до кількох рядків з різними умовами для кожного рядка - excel, logic, vba

Умовний код заповнення клітинки застосовується до кількох рядків з різними умовами для кожного рядка - excel, logic, vba

Я намагаюся написати умовний код заповнення комірокза допомогою VBA, але у мене є деякі проблеми з синтаксисом. Я розумію, що для цього існує вкладка, але мені потрібно застосувати код до декількох різних рядків з різними умовами для кожного рядка, щоб код був швидшим для моїх цілей. Я досить новачок у VBA, але я думаю, що принаймні виправдав логіку.

В основному є стовпчик, який має значення, проти якого потрібно перевірити кожне значення в наступних стовпцях.

(TEST VALUE) | (VALUE TO BE TESTED)| (VALUE TO BE TESTED)...

(TEST VALUE) | (VALUE TO BE TESTED)| (VALUE TO BE TESTED)...

Якщо значення більше, ніж тестове значення на 3 одиниці, клітинку потрібно почервоніти, інакше вона повинна бути зеленою.

Ось що я зробив. Я використовував макрос кнопок, але якщо є спосіб автоматично зробити це без кнопки, яка була б найкращою.

Я продовжую отримувати похибка часу запуску "1004"; помилка, визначена програмою або об'єктом на рядку п'яту. Так що в основному я використовую вкладений набір для циклів. Перший цикл вибирає рядок і вибирає тестове значення для цього рядка. Можливо, я неправильно призначаю змінну або мені потрібно вибрати робочий аркуш, в якому я працюю? Наступна частина циклу тестує наступні значення у кожному рядку, щоб побачити, чи знаходяться вони всередині або поза вказаним діапазоном тестового значення. Нарешті, клітина забарвлюється на основі цього визначення.

КОД:

Private Sub CommandButton21_Click()
Dim i As Integer, j As Integer, T As Integer, R As Integer
"T is the cell we want to test, R is the Integer we want to use to test T
For i = 6 To 132
R = Cells(6, j).Value
For j = 4 To 1000 "loop through each column to test each cell (move to the right down selected row)
T = Cells(i, j).Value "test each cell
If T < (R - 3) Or T > (R + 3) Then
Cells(i, j).Interior.ColorIndex = 4
Else
Cells(i, j).Interior.ColorInex = 3
End If
Next j
Next i
End Sub

Я також спробував використати редактор формули комірок, щоб застосувати цей код, але я не вірю, що ви можете змінити колір комірки таким чином:

"=IF(OR(D6<$C$6-3,D6>$C$6+3),"CHANGE COLOR TO RED","CHANGE COLOR TO GREEN""

Відповіді:

0 для відповіді № 1

Перемістіть наступний рядок вниз по одному рядку (це було раніше, ніж призначити J):

R = Cells(6, j).Value

0 для відповіді № 2

для цього не потрібно використовувати vba. Просто використовуйте умовне форматування. На вкладках, припускаючи, що ви використовуєте Excel 2007 або новішої версії, перейдіть на головну вкладку та виберіть умовне форматування. Виберіть щось із параметрів або ви можете вибрати нове правило. У спливаючому вікні виберіть "за допомогою формули, щоб визначити, які комірки потрібно форматувати. ". Введіть рівняння приблизно на зразок" = if ($ a $ 3 <= a4 + 3, TRUE, False) ", потім виберіть потрібне форматування.