При создании макроса выдает ошибку 1004. Не могу разобраться, чего ему не хватает
Код:
Sub ДаБудетЦвет ()
Range("A2:C500").Interior.Color = RGB(255, 255, 255)
Min = Cells(2, 3)
Max = Cells(2, 3)
a = 2
While Cells(a, 3) <> 0
a = a + 1
Wend
For i = 2 To a
If (Cells(i, 3) < Min) And (Cells(i, 3) <> 0) Then
Min = Cells(i, 3)
m = i
End If
If Cells(i, 3) > Max Then
Max = Cells(i, 3)
x = i
End If
Next
For j = 1 To 3
Cells(m, j).Interior.Color = RGB(0, 0, 255)
Cells(x, j).Interior.Color = RGB(255, 0, 0)
Next
End Sub
Другие языки программирования и технологии
VBA (Excel)
Комментарий к коду для Екатерины.
Цикл
a = 2
While Cells(a, 3) <> 0
a = a + 1
Wend
эти строки можно заменить на а=Cells(2, 3).End(xlDown).Row
Определяет количество заполненных, идущих подряд ячеек.
Поэтому в следующем условии проверка на пустые не нужна
Да и весь код можно сократить и объявить переменные для порядка.
Sub ДаБудетЦвет ()
Dim i As Long, m As Long, x As Long
Dim Min As Double, Max As Double
Range("A2:C500").ClearFormats
Min = Cells(2, 3): Max = Cells(2, 3)
For i = 2 To Cells(2, 3).End(xlDown).Row
If Cells(i, 3) < Min Then Min = Cells(i, 3): m = i
If Cells(i, 3) > Max Then Max = Cells(i, 3): x = i
Next
Range(Cells(m, 1), Cells(m, 3)).Interior.Color = RGB(0, 0, 255)
Range(Cells(x, 1), Cells(x, 3)).Interior.Color = RGB(255, 0, 0)
End Sub
Цикл
a = 2
While Cells(a, 3) <> 0
a = a + 1
Wend
эти строки можно заменить на а=Cells(2, 3).End(xlDown).Row
Определяет количество заполненных, идущих подряд ячеек.
Поэтому в следующем условии проверка на пустые не нужна
Да и весь код можно сократить и объявить переменные для порядка.
Sub ДаБудетЦвет ()
Dim i As Long, m As Long, x As Long
Dim Min As Double, Max As Double
Range("A2:C500").ClearFormats
Min = Cells(2, 3): Max = Cells(2, 3)
For i = 2 To Cells(2, 3).End(xlDown).Row
If Cells(i, 3) < Min Then Min = Cells(i, 3): m = i
If Cells(i, 3) > Max Then Max = Cells(i, 3): x = i
Next
Range(Cells(m, 1), Cells(m, 3)).Interior.Color = RGB(0, 0, 255)
Range(Cells(x, 1), Cells(x, 3)).Interior.Color = RGB(255, 0, 0)
End Sub
если условие If (Cells(i, 3) < Min) And (Cells(i, 3) <> 0) не выполняется, то m = i тоже не выполнится. нужно пересмотреть условие. ошибка из-за того, чтто m не определена. мин - макс на одной ячейке? и еще используй debug. и найдешь ошибки. Успехов!
Дело в том, что в зависимости от данных могут никогда не выполниться условия в ифах, то есть переменные м и х будут пустые, что вызовет ошибку при их использовании в качестве аргумента для Селлс. Надо присвоить им какие-то значения по умолчанию.
Кстати, область видимости переменной - вся процедура.
Кстати, область видимости переменной - вся процедура.
в последнем цикле переменные м и икс не определены, т. к. область их видимости - предыдущие циклы, объявлены они там
Похожие вопросы
- помогите с vba excel
- VBA EXCEL. Где найти список формул по английски??? чтоб потом вписывать формулы через VBA.
- Программа с массивом VBA Excel.
- Не могу разобраться с VBA Excel 2003 как копировать содер жимое одной ячейки в другую
- Помогите пожалуйста построить прямоугольник в VBA (Excel). Как не пытаюсь-постоянно выдаются ошибки.
- Как в VBA (Excel 2007) первые листы всех XLS файлов в папке перенести в один XLS файл?
- VBA Excel Обработка ошибки
- VBA - Парсинг в Excel-VBA курса ЦБ
- Программирование в Excel - VBA
- Макрос для excel - VBA (гиперссылка)