Страницы: 1
RSS
Некорректная работа макроса при передаче дополнительного условия по цвету ячейки через AND
 
Добрый день, уважаемые форумчане!

Благодаря Jack Famous и статьям по vba получилось сделать работающий макрос Выделить_минимум , который при выделении несмежных диапазонов(=$A$2:$A$4;$C$2:$C$4;$E$2:$E$4) красит минимальные значения ячеек в строке. Однако не могу теперь разобраться с вопросом, почему при передаче дополнительного условия (не присваивать минимум если ячейка имеет заливку If arr(st, 1).Value <= min And arr(st, 1).Interior.Color = 0 Then ...) макрос перестает работать, точнее он работает, но не присваивает минимум ни одной ячейке.

Работающий макрос ниже.
Код
Property Get RangeInputBox(Prompt As String, Optional Title As String) As Range
    Dim F As Variant, R As Range
    F = Application.InputBox(Prompt, Title, , , , , , 0)
    On Error Resume Next
    F = Trim(Mid(Application.ConvertFormula(F, xlR1C1, xlA1, True), 2))
    Set R = Range(F)
    On Error GoTo 0
    Set RangeInputBox = R
End Property


Sub Выделить_минимум()
    
    Dim min As Single
    Dim R As Range, arr As Range
    Dim st As Integer
    Dim cl As Integer
    Dim i As Integer
        
    Set R = RangeInputBox("Введите диапазон", "Выделение минимума")
    
       
    For st = 1 To R.Areas(1).Rows.Count
    min = 1000
        
    For i = 1 To R.Areas.Count
    Set arr = R.Areas(i)
    
    If arr(st, 1).Value <= min Then
        min = arr(st, 1).Value
    End If
        
    Next i
    
    For k = 1 To R.Areas.Count
    Set arr_2 = R.Areas(k)
    If min = arr_2(st, 1).Value Then
    arr_2(st, 1).Interior.Color = vbGreen
    End If
    
    Next k
    
  
    Next st
    
    MsgBox min
    
End Sub

Помогите, пожалуйста, подправить макрос таким образом, чтобы в результате работы макроса получалась необходимая раскраска, как в примере во вложении.

Благодарю за помощь!
 
Цитата
Alex213 написал:
При передаче дополнительного условия через AND макрос перестает корректно работать
модератор с таким названием темы - закроет ее - она не отражает суть вопроса (а and в макросе может делать что хочешь с кем хочешь и как  хочешь)
Не бойтесь совершенства. Вам его не достичь.
 
Уважаемый модератор, измените, пожалуйста, название темы "Некорректная работа макроса при передаче дополнительного условия по цвету ячейки через AND"
Изменено: Alex213 - 27.01.2021 12:08:59
 
Цитата
Alex213 написал:
arr(st, 1).Interior.Color
и подозреваю что в массиеве нет просто цвета -только значения
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, я полагал, что arr(st,1) является элементом массива, т.е. самой ячейкой, в этом и ошибка может быть... Если вы правы, можете  подсказать почему закрашивает ячейки в данном случае, если считает их значениями arr_2(st, 1).Interior.Color = vbGreen?
 
Mershik,  нет.
В файле нет цвета vbgreen
Код
?ActiveCell.Interior.Color =vbgreen
False
 
Проблема решена, заливка у бесцветных ячеек оказалась с индексом 16777215
 
Цитата
Alex213 написал:
заливка у бесцветных ячеек
наверное цвет шрифта имели ввиду?
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, я прописал дополнительное условие таким образом arr(st, 1).Interior.Color = 16777215, вроде бы это заливка ячейки, скорее всего не шрифт, так как макрос работает с ячейками у которых шрифт одного цвета, а заливка отличается
Страницы: 1
Наверх