Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Закраска ячеек, указываемого диапазона. / 6 сообщений из 6, страница 1 из 1
15.02.2010, 16:18
    #36470369
lopuxi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закраска ячеек, указываемого диапазона.
Я долго думал как сформулировать свой вопрос и понял что проще будет скинуть кусок задачи где раскрывается вся суть.

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

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

'Dim MAX_ROW As Long
Const MIN_ROW As Long =  4 
Const MIN_COL As Long =  3 
Const MAX_ROW As Long =  12  ' это значение мне надо сделать изменяющимся. 
Const MAX_COL As Long =  33 

Dim nArr(MIN_ROW To MAX_ROW, MIN_COL To MAX_COL) As Long

' проверяем на попадание в рабочий диапазон
If Target.Row >= MIN_ROW And Target.Row <= MAX_ROW And _
    Target.Column >= MIN_COL And Target.Column <= MAX_COL Then

        If Selection.Interior.Color = CollorEdit Then
                ActiveCell.Select
                ActiveCell.Value = ""
                Selection.Interior.ColorIndex =  0 
    
                    Else: Selection.Interior.Color =  0 
                        ActiveCell.Select
                        Selection.Interior.Color = CollorEdit
        End If
End If
End Sub

p.s.
Во вложенном коде, есть две кнопки по добавлению и удалению строк в графике. Но диапазон под закраску ячек не изменяется. Поэтому если в графике больше 9 строк, то 10 и последующие закрашиваться по двойному щелчку не будут... так же и в обратную если меньше 9 строк, то график состоящий из 3-4 строк будет закрашиваться за своими границами...
...
Рейтинг: 0 / 0
15.02.2010, 16:29
    #36470400
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закраска ячеек, указываемого диапазона.
lopuxi
Код: plaintext
1.
Dim nArr(MIN_ROW To MAX_ROW, MIN_COL To MAX_COL) As Long


Вся проблема в этой строке. У Вас "жестко" зафиксирован массив.

в массиве можно изменить только последнюю размерность(в данном случае MIN_COL To MAX_COL) либо сделать самописную процедуру, которая будет обходными путями (через жонглирование массивами) увеличивать первую размерность.

Так что вариантов 3
- сразу объявить массив где MAX row максимально возможный и адаптировать код
- поменять местами Row и Column и через Redim (Preserve) менять последнюю размерность массива
- создать самописную процедуру которая будет менять первую размерность массива.

и еще по моему изменяемые массивы должны быть типа Variant, но я не уверен.
...
Рейтинг: 0 / 0
15.02.2010, 16:35
    #36470424
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закраска ячеек, указываемого диапазона.
пардоньте
ерунду сказал без просмотра примера

так?
...
Рейтинг: 0 / 0
15.02.2010, 16:47
    #36470460
lopuxi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закраска ячеек, указываемого диапазона.
Shamanusпардоньте
ерунду сказал без просмотра примера

так?

хм... ты убрал код
Код: plaintext
1.
2.
3.
4.
Const MIN_ROW As Long =  4 
Const MIN_COL As Long =  3 
Const MAX_ROW As Long =  12  
Const MAX_COL As Long =  33 

и теперь при нажатии на ячейку выплывает ошибка, что переменные MIN_ROW и остальные не объявлены.
...
Рейтинг: 0 / 0
15.02.2010, 16:55
    #36470493
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закраска ячеек, указываемого диапазона.
lopuxi,

забыл ещё один фокус
просто у меня 2003 excel и я код не компилил
сейчас проверил на 2010 все работает
...
Рейтинг: 0 / 0
15.02.2010, 17:27
    #36470599
lopuxi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закраска ячеек, указываемого диапазона.
Shamanuslopuxi,

забыл ещё один фокус
просто у меня 2003 excel и я код не компилил
сейчас проверил на 2010 все работает


ага, так работает.
Спасибо! :))
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Закраска ячеек, указываемого диапазона. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]