powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с процедурой BeforeDoubleClick
9 сообщений из 9, страница 1 из 1
Работа с процедурой BeforeDoubleClick
    #36328810
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня два вопроса по этой процедуре "BeforeDoubleClick".
1) Как ограничить ее действие на определенное поле, а не на весь лист Excel? У меня рабочее поле 5х5. Хочу что бы только там по двойному щелчку изменялось значение?

2) Как бы мне ограничить количество раз нажатых на ячейку. Не более двух раз. То есть, есть значение 0 в ячейке, я нажал стало 1, нажал еще раз стало снова 0. И все, больше изменить значение в данной ячейке нельзя?
...
Рейтинг: 0 / 0
Работа с процедурой BeforeDoubleClick
    #36329010
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как ограничить ее действие на определенное поле - анализируй
Код: plaintext
1.
ActiveCell.Address(RowAbsolute:=False, columnabsolute:=False, ReferenceStyle:=xlA1)
...
Рейтинг: 0 / 0
Работа с процедурой BeforeDoubleClick
    #36329045
Фотография bbx1389
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxi,

If Not Intersect(Target, Range("a1:b10")) Is Nothing Then
Cancel = True
MsgBox "PRIVET"
End If

Если пересечение Target и нужного Range пусто, то ... и наоборот
...
Рейтинг: 0 / 0
Работа с процедурой BeforeDoubleClick
    #36329054
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: lopuxi
> У меня два вопроса по этой процедуре "BeforeDoubleClick".

Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Option Explicit
Const MIN_ROW As Long =  1 
Const MIN_COL As Long =  1 
Const MAX_ROW As Long =  15 
Const MAX_COL As Long =  15 
Const MAX_NUMBER_OF_ATTEMPTS As Long =  2 

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

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
' проверяем на попадание в рабочий диапазон
If Target.Row >= MIN_ROW And Target.Row <= MAX_ROW And _
    Target.Column >= MIN_COL And Target.Column <= MAX_COL Then
    ' проверяем на количество нажатостей :)))
    If nArr(Target.Column, Target.Row) < MAX_NUMBER_OF_ATTEMPTS Then
        nArr(Target.Column, Target.Row) = nArr(Target.Column, Target.Row) +  1 
' Преобразовываем в число(получаем 0 или 1, потом преобразовываем в логическое значение,
' потом инвертируем полученное логическое значение,преобразовываем результат в число и берём по модулю :)))
        Target.Value = Abs(CInt(Not CBool(Val(Target.Value))))
    Else
        Target.Interior.ColorIndex =  36 
    End If
End If
Cancel = True
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Long, j As Long
'Просто очищаем что наделали :)))
For i = MIN_ROW To MAX_ROW
    For j = MIN_COL To MAX_COL
        nArr(i, j) =  0 
        With Cells(i, j)
            .Value =  0 
            .Interior.ColorIndex =  0 
        End With
    Next j
Next i
End Sub
По клику правой кнопкой мыши очищается будущее поле, а потом кликаем до пожелтения

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Работа с процедурой BeforeDoubleClick
    #36329069
Фотография bbx1389
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxi,

А нехотите просто поставить excel-вскую "проверку вводимых значений"? Красивее, удобнее и меньше мучений....
...
Рейтинг: 0 / 0
Работа с процедурой BeforeDoubleClick
    #36329200
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bbx1389lopuxi,

А нехотите просто поставить excel-вскую "проверку вводимых значений"? Красивее, удобнее и меньше мучений....

Хех если б я знал что это такое:))
Я еще не все знаю об экселе и не со всеми процедурами и функциями хорошо знаком. :))
Потихоньку разбираю все это дело.
...
Рейтинг: 0 / 0
Работа с процедурой BeforeDoubleClick
    #36329211
Фотография bbx1389
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxi,

ставите в 1-ую ячейку 0 во вторую 1

выбираете ячейку где Вам нужно ограничить данные 0 и 1.


Меню ---Данные---Проверка

Тип данных:список
Источник данных- диапозон из двух ячеек с 0 и 1(может можно и просто руками список задать, не помню точно...)
...
Рейтинг: 0 / 0
Работа с процедурой BeforeDoubleClick
    #36329226
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно и просто руками список задать - можно и руками, через ";" , в конце можно "-" добавить, для возможности выбора пустого значения, хотя можно и просто через DELETE поле очистить.
...
Рейтинг: 0 / 0
Работа с процедурой BeforeDoubleClick
    #36333945
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот только эти списки легко обходятся, они не гарантируют, что после ввода будет именно значение из списка.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с процедурой BeforeDoubleClick
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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