Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2009, 15:57   #11
Connector
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 12
По умолчанию

Пожалуйста подскажите, как сделать, чтобы клик на ячейке столбца А прибавляла, а клик на ячейку столбца В убавляла значение в ячейке столбца С?
Connector вне форума Ответить с цитированием
Старый 18.12.2009, 21:23   #12
пасечник
Заблокирован
 
Регистрация: 24.06.2009
Сообщений: 28
По умолчанию

SelectionChange будет реагировать на программный Select.
«If Target.Cells.Count > 1 Then Exit Sub» в SelectionChange нужно поставить первой строкой, но лучше вместо Target там использовать ActiveCell: тогда при групповом Select будет считаться, что клик был на ячейке, которая выделена первой.
BeforeRightClick для конкретного случая (столбы A,B,C, изменение на 1):
Код:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column > 2 Then Exit Sub
Cancel = True
With Cells(Target.Row, 3): .Value = .Value + 3 - 2 * Target.Column: End With
End Sub
пасечник вне форума Ответить с цитированием
Старый 21.12.2009, 12:03   #13
Connector
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 12
По умолчанию

пасечник
Большое спасибо за оказанную помощь, всё работает исправно. Но, возможно ли макрос сделать более гибким, чтобы можно было бы менять и переназначать колонки +/- и результирующую более конкретно?
Например, H (+1); I (-1); G (Result).
Connector вне форума Ответить с цитированием
Старый 21.12.2009, 20:20   #14
пасечник
Заблокирован
 
Регистрация: 24.06.2009
Сообщений: 28
По умолчанию

Да, это возможно!
пасечник вне форума Ответить с цитированием
Старый 22.12.2009, 09:10   #15
Connector
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 12
По умолчанию

Если не очень затруднит, покажите какое-нибудь решение.
С уважением!
Connector вне форума Ответить с цитированием
Старый 22.12.2009, 15:53   #16
пасечник
Заблокирован
 
Регистрация: 24.06.2009
Сообщений: 28
По умолчанию

Зачем это надо?
пасечник вне форума Ответить с цитированием
Старый 22.12.2009, 16:51   #17
Connector
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 12
По умолчанию

Это очень просто
Хочу составить таблицу расходных материалов. Точнее, она уже составлена. В неё уже включены некоторые несложные формулы исключающие повторения кодов, индикации по различным условиям итд. Нехватает только изменения имеющегося количества кликом для удобства.
Connector вне форума Ответить с цитированием
Старый 22.12.2009, 18:06   #18
пасечник
Заблокирован
 
Регистрация: 24.06.2009
Сообщений: 28
По умолчанию

Не правильнее будет просто разнести + и - в разные события?
Столбы H и I отпадают, достаточно кликать только по нужной ячейке с количеством (BeforeRightClick минус, BeforeDoubleClick плюс) независимо от того, где на листе она находится (диапазон местоположения можно ограничить).
пасечник вне форума Ответить с цитированием
Старый 23.12.2009, 09:18   #19
Connector
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 12
По умолчанию

Думаю, это было бы лучше. Не затруднит показать пример такого решения?
Connector вне форума Ответить с цитированием
Старый 23.12.2009, 15:27   #20
пасечник
Заблокирован
 
Регистрация: 24.06.2009
Сообщений: 28
По умолчанию

В модуль нужного листа:
Код:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = F(Target, -1) ' -1
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = F(Target, 1) ' +1
End Sub
Private Function F(ByVal R As Range, x As Integer) As Boolean
'для любой ячейки листа RightClick=-1, DoubleClick=+1
'работать не будет, если в ячейке текст
'если пусто или меньше 1 - не будет работать минус
If Not IsNumeric(R.Value) Or (R.Value = "" Or R.Value < 1) * (Sgn(x) - 1) _
Then Exit Function
R = R + x
F = True
End Function
пасечник вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как кликом мышки выделить букву в слове? bagish Общие вопросы Delphi 7 24.06.2009 10:05