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

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

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

Если пересечение Target и нужного Range пусто, то ... и наоборот
...
Рейтинг: 0 / 0
24.11.2009, 17:14
    #36329054
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с процедурой BeforeDoubleClick
> Автор: 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
24.11.2009, 17:18
    #36329069
bbx1389
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с процедурой BeforeDoubleClick
lopuxi,

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

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

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

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

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


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

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


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