2015-02-06 4 views
0

Здравствуйте я пишу код найти трудно выполнить этуDyanmic изменение диапазона в VBA

Column E row 40 : 

P0.1, 

P0.2, 

P0.6 etc. 

Column I row 39 : 

a2.0, 

P0.1, 

P0.2, 

P0.3. 

Column J row 39 : 

b2.0, 

P0.5, 

P0.2, 

P0.1. 

Similary 10 столбцов.

Так что я пишу VBA, если первая ячейка строка 40 столбца i I красная. Затем я проверяю наличие повторяющихся значений между столбцом E строки 40 в строке 50 и с Столбец I строки 40.

То есть, если строка 40 столбец I I красный, чем объем производства будет

Column E row 40 : 

P0.1(SOME COLOR INDICATING DUPLICATE VALUE), 

P0.2(SOME COLOR INDICATING DUPLICATE VALUE), 

P0.3 etc. 

Column I row 39 : 

a2.0(red color which is a condition), 

P0.1(SOME COLOR INDICATING DUPLICATE VALUE), 

P0.2(SOME COLOR INDICATING DUPLICATE VALUE), 

P0.6. 

Для этого я написал код, который работает нормально.

что

enter Public Sub nextphase33() 

Dim wsPaste As Worksheet 

Dim wsFind As Worksheet 

Dim j As Long, i As Long 

Set wsFind = ActiveWorkbook.Sheets(6) 

For j = 9 To 33 

If wsFind.Cells(39, j).Interior.Color = RGB(255, 0, 0) Then 

    Range("E40:E46,I40:I73").Select 

    Range("I40").Activate 

    Selection.FormatConditions.AddUniqueValues 
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 

    Selection.FormatConditions(1).DupeUnique = xlDuplicate 

    With Selection.FormatConditions(1).Interior 

     .PatternColorIndex = xlAutomatic 

     .Color = 150 

     .TintAndShade = 0 

    End With 

    Selection.FormatConditions(1).StopIfTrue = False 

Else 

j = j + 1 

End If 

Next j 

End Sub here 

Теперь моя проблема заключается в том, что диапазон является фиксированным.

Если красного цвета в колонке я это сравнить столбец е и столбец я

Это теперь я хочу, чтобы добавить цикл, если первый столбец строки я не красный он должен проверить красный цвет в столбец j сравнивается и выделяет дубликат со значениями между Столбец E строка 40 и столбец j строка 40. Что не происходит из моего кода, пожалуйста, помогите мне, как сделать диапазон динамическим.

ответ

0

Я думаю, вы должны использовать ссылки R1C1 стиль вместо A1 для выбора диапазона, поэтому при условии, что мы псевдонимы таблицы, как это:

dim wsFind as worksheet: set wsFind = activeWorkbook.sheets(6)

выбор диапазона в исходном коде будет выглядеть как это:

wsFind.range(wsFind.cells(40,5), wsFind.cells(73,9)) 
wsFind.cells(40,9).Activate 

Вы можете использовать переменную col для номера столбца, а затем изменить что:

wsFind.range(wsFind.cells(40,5), wsFind.cells(73,col)) 
wsFind.cells(40,col).Activate 

И тогда вы можете использовать ваш, если условие, которое проверяет внутренний цвет, чтобы установить значение col, или если вы собираетесь пораженную колонку быть один меньше, чем j то все, что вам нужно сделать, это начать использовать j-1 где я есть col.

+0

Номер Это всего лишь 1 часть из 6 макросов. У меня должен быть макрос таким образом. Если предложение должно быть первым, что ячейка красного цвета, выберите диапазон ячеек и проверьте наличие повторяющихся значений. еще проверьте цвет следующей ячейки и выберите другой диапазон ячеек и найдите повторяющиеся значения. Я не могу использовать диапазон до состояния IF. –

+0

i заменен 'this.range (this.cells (40,5), this.cells (73,9)). Выберите this.cells (40,9).Активировать» с 'this.range (this.cells (40,5), this.cells (73, COL)). Выберите this.cells (40, COL) Defined переменную COL .Activate' и Рабочий лист как предложено, но получить ошибки как «предметная переменная или переменная блока не установлен» –

+0

В ближайшем окне, что вы получите за '? this.name' , когда происходит ошибка? –

Смежные вопросы