Delux Пользователь Сообщений: 138 |
#1 02.11.2020 19:32:05 Здравствуйте, подскажите мне пожалуйста. Как запустить форму двойным щелчком по любой ячейки из столбца «B:B», и перейти в вызванную форму. Я в модуле листа сделала так
И теперь, надо выйти из ячейки и перейти в форму. А как чтобы сразу переходить в форму |
||
Ігор Гончаренко Пользователь Сообщений: 13746 |
#2 02.11.2020 19:37:14
Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
Delux Пользователь Сообщений: 138 |
#3 02.11.2020 19:51:23 Правильно сделал?
ругается и выбрасывает в VBA |
||
buchlotnik Пользователь Сообщений: 3863 Excel 365 Бета-канал |
#4 02.11.2020 19:55:30
нет, вот это
к чему относится, где начинается With? и вообще почему передаете в форму значения отсюда, а не в userform_activate? Изменено: buchlotnik — 02.11.2020 19:56:54 Соблюдение правил форума не освобождает от модераторского произвола |
||||
Ігор Гончаренко Пользователь Сообщений: 13746 |
#5 02.11.2020 19:58:29
Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
Delux Пользователь Сообщений: 138 |
Всё равно ругается, модуль в «Лист1» Прикрепленные файлы
|
buchlotnik Пользователь Сообщений: 3863 Excel 365 Бета-канал |
#7 02.11.2020 20:25:16
а ничего, что на userform в вашем файле нет ни одного текстбокса? Изменено: buchlotnik — 02.11.2020 20:26:15 Соблюдение правил форума не освобождает от модераторского произвола |
||
см. сообщение #2 — оно сработает Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
Delux Пользователь Сообщений: 138 |
#9 02.11.2020 20:32:39
Дак мне надо как-то под мою задачу, это приладить. Попытался, выдало ошибку см. сообщение #3 |
||
buchlotnik Пользователь Сообщений: 3863 Excel 365 Бета-канал |
#10 02.11.2020 20:38:59
причина в сообщении #7 Соблюдение правил форума не освобождает от модераторского произвола |
||
Delux Пользователь Сообщений: 138 |
|
Ігор Гончаренко Пользователь Сообщений: 13746 |
#12 06.11.2020 11:40:57 оперативно (не прошло и 5 дней) Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
Baykal555 1 / 1 / 0 Регистрация: 08.09.2017 Сообщений: 391 |
||||||
1 |
||||||
Событие при двойном клике26.06.2020, 16:44. Показов 3949. Ответов 14 Метки нет (Все метки)
Всем привет!
Файл прилагаю. Вложения
0 |
АЕ ᴁ® 3069 / 1735 / 361 Регистрация: 13.12.2016 Сообщений: 5,937 Записей в блоге: 4 |
||||
26.06.2020, 17:08 |
2 |
|||
Baykal555, пробуйте так
0 |
1 / 1 / 0 Регистрация: 08.09.2017 Сообщений: 391 |
|
26.06.2020, 17:10 [ТС] |
3 |
АЕ, так работает. А как прописать, чтобы указывать диапазон? В дальнейшем я планирую сделать цикл.
0 |
ᴁ® 3069 / 1735 / 361 Регистрация: 13.12.2016 Сообщений: 5,937 Записей в блоге: 4 |
|
26.06.2020, 17:14 |
4 |
Baykal555, логика ведь понятная. ряды и столбики в условии меняйте на нужные диапазоны.
0 |
1 / 1 / 0 Регистрация: 08.09.2017 Сообщений: 391 |
|
26.06.2020, 18:12 [ТС] |
5 |
АЕ, а почему мой вариант не работает?
0 |
Заблокирован |
|
26.06.2020, 18:52 |
6 |
Baykal555, если А=В — это не значит что это одна и та же переменная.
0 |
Alex77755 11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
||||
26.06.2020, 19:59 |
7 |
|||
РешениеВ дальнейшем я планирую сделать цикл для региона но без цикла
0 |
ᴁ® 3069 / 1735 / 361 Регистрация: 13.12.2016 Сообщений: 5,937 Записей в блоге: 4 |
|
26.06.2020, 22:54 |
8 |
а почему мой вариант не работает? Не судьба….
0 |
1 / 1 / 0 Регистрация: 08.09.2017 Сообщений: 391 |
|
26.06.2020, 23:16 [ТС] |
9 |
АЕ, просто пытаюсь понять в чем ошибка…
0 |
ᴁ® 3069 / 1735 / 361 Регистрация: 13.12.2016 Сообщений: 5,937 Записей в блоге: 4 |
|
26.06.2020, 23:23 |
10 |
просто пытаюсь понять в чем ошибка… Я обычно в этих ситуациях не напрягаю людей.
0 |
1 / 1 / 0 Регистрация: 08.09.2017 Сообщений: 391 |
|
26.06.2020, 23:25 [ТС] |
11 |
АЕ, спасибо…
0 |
1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
|
27.06.2020, 07:32 |
12 |
понять в чем ошибка ActiveCell (или Target) = Range(«A1») это не сравнение объектов, а сравнение значений в этих ячейках.
1 |
1 / 1 / 0 Регистрация: 08.09.2017 Сообщений: 391 |
|
28.06.2020, 19:28 [ТС] |
13 |
Burk, спасибо!
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
|
29.06.2020, 08:55 |
14 |
АЕ, зачем сравнивать к-во выделенных ячеек при двойном клике? Разве можно двойной клик сделать по нескольким ячейкам?
1 |
ᴁ® 3069 / 1735 / 361 Регистрация: 13.12.2016 Сообщений: 5,937 Записей в блоге: 4 |
|
29.06.2020, 09:01 |
15 |
зачем сравнивать к-во выделенных ячеек при двойном клике? Разве можно двойной клик сделать по нескольким ячейкам? Vlad999, полностью согласен.
0 |
Имитация двойного клика (VBA) |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
248
29 ноября 2007 года
Dmitry2064
590 / / 06.12.2006
Конечно, напрмер для ячейки А1
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, ByRef Cancel As Boolean)
If Target = [A1] Then MsgBox «Получилось!»
End Sub
Может я чего-то не так делаю или не понял. Но вставив этот код я дважды нажимаю на ячейку и, как и прежде, попадаю в режим ввода текста.
Цитата:
От SkyM@n: Можно юзать просто рисунок.
Так мне-то надо, что бы потом обрабатывался именно тот ряд, в котором этот рисунок или кнопка находятся (происходит изменение цвета заливки всего ряда для обозначения наступления события «выполнено», либо вставка времени в нужную ячейку). Вот можно ли такую привязку сделать?
Может быть так будет понятне (а может и нет, потому что опять многословно):
у меня ряд начинается с названия документа и в сл. ячейках я ставлю время прохождения этапов обработки (время 1-й распечатки, время правки, «сдано»). Пока руками делается так. Я делаю документ, распечатываю его, пишу время (автоматизировать не нужно). Потом мне приносят док на правку. Я его отыскиваю в куче папок, открываю в программе, правлю, распечатываю и руками ставлю время правки. Потом мне дают команду «готово» и я опять отыскиваю в папках этот док и выкладываю его на сервер. (Отыскивать приходится, потому что постоянно занимаешься след. документом, а потом возвращаешься к какому-то из предыдущих).
А при автоматизации, я бы нажав на кнопку в ряду, соответствующем нужному доку, открывал бы его для правки, а нажав сл. кнопку, он бы копировался на сервер без моего лазания по папкам. Пока я это сделал в виде всего двух кнопок. Т.е. мне надо поставить курсор на нужный ряд и потом нажать соотв. кнопку «правка» или «на сервер», которые вынесены в отдельное место. А если бы такие кнопки были сделаны для каждого документа, то не приходилось бы скакать по экрану, а сразу найдя нужный док, тут же и нажать нужную кнопку. Вот такое извращенческое пожелание .
- Remove From My Forums
-
Question
-
I would like to be able to double-click on a cell within a table and have excel take me to another table where that value that I double click on is filtered so that I can see all of the values in the 2nd table for the value that I double clicked on in the
first table. For example…I have a list of projects in a table column named «projects» I also have a list of projects in a 2nd table named «Region». If I double click on Project #1, I would like to see all of the values
for Project #1 within my Region table. By using the following code, I can do this. However, I would now like to do this in another column within the same «projects» table. So I can either double click by column name or by Region
and have it sorted in the «Region» table that is in another worksheet.Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim strCellVal As String
Dim i As LongOn Error Resume Next
If Intersect(Target.EntireRow, [Projects[Region]]) Is Nothing Then Exit Sub
If Target.Cells.Count <> 1 Then Exit Sub
strCellVal = ActiveCell.Value
With Sheet3
.ListObjects(1).Range.AutoFilter 1, Criteria1:=Intersect(Target.EntireRow, [Projects[Region]])
.Activate
i = .ListObjects(1).Range.Columns(1).SpecialCells(xlCellTypeVisible).Count
If i = 1 Then
.ListObjects(1).Range.End(xlDown).Offset(1, 2).Value = strCellVal
End If
.[A1].Select
End With
Cancel = TrueEnd Sub
How do I set this up so that I can use the double-click capability in TWO different rows, not just one?
Answers
-
I think you just need to see where you are double-clicking:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim strCellVal As String
Dim i As LongOn Error Resume Next
If Target.Cells.Count <> 1 Then Exit Sub
‘Code to filter on RegionIf Not Intersect(Target, [Projects[Region]]) Is Nothing Then
strCellVal = Target.Value
With Sheet3
.ListObjects(1).Range.AutoFilter 1, Criteria1:=Intersect(Target, [Projects[Region]])
.Activate
i = .ListObjects(1).Range.Columns(1).SpecialCells(xlCellTypeVisible).Count
If i = 1 Then
.ListObjects(1).Range.End(xlDown).Offset(1, 2).Value = strCellVal
End If
.[A1].Select
End With
Cancel = True
End If‘Code to filter on other basis
If Not Intersect(Target, [Projects[OtherField]]) Is Nothing Then
strCellVal = Target.Value
With Sheet3
‘code here to filter
End With
Cancel = True
End IfEnd Sub
-
Edited by
Monday, August 5, 2013 4:38 PM
edit -
Marked as answer by
Fei XueMicrosoft employee
Tuesday, August 20, 2013 1:00 AM
-
Edited by
-
In Sheet1’s codemodule: remove the two instances of
.ListObjects(1).ShowAutoFilter = False
if you want to add filtering: ie, show Region is «US» AND TES Capabilities
is «Capabilities 2»Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim strCellVal As String
Dim i As LongIf Target.Cells.Count <> 1 Then Exit Sub
If Not Intersect(Target, [Projects[Region]]) Is Nothing Then
strCellVal = Target.ValueWith Sheet3
.ListObjects(1).ShowAutoFilter = False
.ListObjects(1).Range.AutoFilter 1, Criteria1:=Target.Value
.Activate
i = .ListObjects(1).Range.Columns(1).SpecialCells(xlCellTypeVisible).Count
If i = 1 Then
.ListObjects(1).Range.End(xlDown).Offset(1, 2).Value = strCellVal
End If
.[A1].Select
End WithCancel = True
End IfIf Not Intersect(Target, [Projects[Capabilities]]) Is Nothing Then
strCellVal = ActiveCell.ValueWith Sheet3
.ListObjects(1).ShowAutoFilter = False.ListObjects(1).Range.AutoFilter 3, Criteria1:=Target.Value
.Activate
i = .ListObjects(1).Range.Columns(1).SpecialCells(xlCellTypeVisible).Count
If i = 1 Then
.ListObjects(1).Range.End(xlDown).Offset(1, 2).Value = strCellVal
End If
.[A1].Select
End WithCancel = True
End IfEnd Sub
-
Edited by
Bernie Deitrick, Excel MVP 2000-2010
Thursday, August 8, 2013 6:32 PM
edit -
Marked as answer by
George Hua
Monday, August 12, 2013 1:30 AM
-
Edited by