powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Закраска ячеек, указываемого диапазона.
6 сообщений из 6, страница 1 из 1
Закраска ячеек, указываемого диапазона.
    #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
Закраска ячеек, указываемого диапазона.
    #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
Закраска ячеек, указываемого диапазона.
    #36470424
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардоньте
ерунду сказал без просмотра примера

так?
...
Рейтинг: 0 / 0
Закраска ячеек, указываемого диапазона.
    #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
Закраска ячеек, указываемого диапазона.
    #36470493
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxi,

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

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


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


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