Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/41: Рейтинг темы: голосов - 41, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 12

Обратная связь с формой из ячейки в Excel

17.05.2011, 00:03. Показов 7758. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди добрые помогите, немогу решить проблему: нужно чтобы при двойном щелчке на ячейке вызывалась какая либо форма, если конкретно то мне нужна процидура на уровне листа как для кнопки но только вместо объекта 'кнопка' использовать объект ячейка.
Для примера вот код который я хотел бы разместить
sub range('A1')_DblClick()
...
end sub

но насколько я знаю такую процедуру написать нельзя, хотя конечно я могу ошибаться.
Можно конечно создать гиперссылку, но мне не подходит данный вариант.

roman.2001.GOR@rambler.ru

Зарание благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.05.2011, 00:03
Ответы с готовыми решениями:

Связь ячейки Excel с doc-файлом
Такая проблема: как можно связать содержание ячейки Excel средствами VBA, с документом Word? Конкретно есть документ ворда с, например, 6...

Организовать связь элемента checkbox (флажок) и ячейки в excel
возникла потребность создать кучу ячеек и чтобы в каждой из них был checkbox который бы устанавливал для этой ячейки значение 0 или 1. ...

Изменения формата ячейки Excel средствами VBA в зависимости от значения другой ячейки
Здравствуйте. Столкнулся с проблемой. Необходимо на листе Excel Залить, предположим, ячейку "C4" Зелёным цветом, при условии,...

28
fess
17.05.2011, 04:19
в окне VBA для нужного тебе листа создай процедуру типа
Visual Basic
1
2
3
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
   МояФорма.Show
End Sub
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 12
17.05.2011, 21:25  [ТС]
всебы хорошо, но как указать конкретную ячейку, чтобы можно было щелкать не на любой ячейке а на конкретной, или даже на нескольких объединеных ячейках и вызывать форму незнаю точно что значит Target но из html помню что так в теге ссылки '<a>' указывалось имя окна, а as Excel.Range стало быть значит что в виде ссылки обозначается любая ячейка листа но вот как указать конкретную ячейку
0
Терминатор
17.05.2011, 22:26
Зайди в VBA, кликни на том листе на котором тебе надо, и просто скопируй и вставь этот код.
Затем проверь как работает, кликнув на А1

Visual Basic
1
2
3
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = '$A$1' Then MsgBox 'Ну, что получилось?'
End Sub
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 12
18.05.2011, 02:33  [ТС]
Не надо острить я только-только начал изучать vba, но всеравно огромное приогромное спасибо.
в связи с написаным выше следующий вопрос
А если вместо адреса $A$1 мне необходимо использовать использовать cells(1,1) а если быть точнее то даже (это к примеру) range (cells(1,1),cells(1,2))кроме того, указанный метод '_SelectionChange' не подходит, больше подходит метод '_BeforeDoubleClick' тобиш процедура должна выглядеть так:
Visual Basic
1
2
3
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
   If Target.Address = '$A$1' Then UserForm1.Show
End Sub
зарание прошу прощения за излишние беспокойство, но,
хочу поставить задачу более наглядным способом:

в общем идея следующая:
вариант №1 - програмно я определил диапозон смежных ячеек допустим А1:В1 для этого диапозона определяется общий фон, рамка и т.д. в первую ячейку диапозона вноситься некая запись затем к примеру производи выше перечисленые действия для диапозона В2:С2 но запись вносится уже другая, нужно чтобы при двойном щелчке на любой из ячеек 1-го или 2-го диапозона вызывалась некая форма, при этом запись из первой ячейке диапозона или отсутствие таковой определяла какие данные заносятся в форму. По идее процедура

Visual Basic
1
2
3
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
   If Target.Address = '$A$1' Then UserForm1.Show
End Sub
используется как ссылка на выполнение действия т.е. другими словами можно написать примерно следующие

Visual Basic
1
2
3
4
5
6
Private Sub Worksheet_BeforeDoubleClick()
   If Target.Address = '$A$1' or Target.Address = '$B$1' and Range ('A1').Value > 0 Then
      UserForm1.Show
   Else
   End If
End sub
но! по сути мне нужно чтобы конкретный адрес А1 и В1 не задовался как условие перехода к форме, мне необходимо чтобы при двойном щелчке в любой ячейке условно выделенного диапозона (к примеру обшим фоном) бралось значение из первой ячейки диапозона и вносилось на форму (т.е. в переменную которой будет равно к примеру текстовое поле формы) а заодно вызывалась сама форма, содержание которой определяло бы значение 'той самой первой' ячейки из условно выделеного диапозона, при этом диапозонов на листе может быть несколько и зарание начало и конец условно выделенного диапозона неизвестны, т.е. я повторюсь критерий для вызова формы не должен быть адресом ячейки/ек но при двойной щелчек в этом диапозоне ячеек принадлежащих к одной группе (условно выделеной) должен вызывать одну и туже форму с одинаковыми значениями, а двойной щелчек по любой из ячеек другой, к примеру, только что образованной грруппе условно выделеных ячеек должен вызывать туже форму но уже с другими данными.
вариант №2 - просто навсего объеденить ячейки одной группы в однутогда не надо будет заморачиваться с принадлежностью или не принадлежностью смежных ячеек к группе
0
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 12
18.05.2011, 02:47  [ТС]
в общем люди простите за гон разведеный чуть выше, просто я сам заморочился так, что не увидел очевидного, первый вариан кода подходит достаточно идеально

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
МояФорма.Show
End Sub

осталась лишь маленькая проблемка как внести данные данные из только что дважды щелкнутой ячеки или объединеных ячеек в переменную, т.е. узнать значение ячейки (объеденёных ячеек) по которой я только что щелкнул два раза, при этом не задавая в процедуре адрес ячейки (ячеек)
0
fess
18.05.2011, 03:42
Visual Basic
1
aa = Cells(ActiveCell.Row, ActiveCell.Column).Value
fess
18.05.2011, 07:04
во натупил!!! :-)))
Visual Basic
1
aa = ActiveCell.Value
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 12
18.05.2011, 14:57  [ТС]
огромное человеческое спасибо!!! :-)
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
22.05.2011, 03:20
Роман,
У события BeforeDoubleClick() есть аргумент Target. Так что Вы можете воспользоваться им для решения Вашей задачи и не мучить лишний раз ActiveCell.

Для получения значения находящегося в ячейке достаточно :
iTargetValue = Target.Value

Если ячейки об'единённые, то :
iTargetValue = Target.Item(1).Value

P.S. Не забудьте об'явить переменную iTargetValue как Global
0
fess
22.05.2011, 03:25
2Pashulka

Можно и так. Никаких проблем. Просто насколько понял ActiveCell даже в объединенной ячейке выдаст значение без ошибки. Я решил, что через ActiveCell будет проще.
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
22.05.2011, 03:39
А что это строка выдаст ошибку ???

iTargetValue = Target.Item(1).Value

P.S. никто не мешает использовать только этот вариант.
0
fess
22.05.2011, 03:49
:-)
нет не выдаст. каждый вариант имее право на жизнь.
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
22.05.2011, 04:06
Если каждый вариант имеет право на жизнь, то зачем Вы исправили свой самый первый вариант ???
0
fess
22.05.2011, 04:15
я написал почему.
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
22.05.2011, 04:22
Тогда Вы противоречите сами себе, если любой вариант имеет право на жизнь, то ничего исправлять и совершенствовать не нужно ... и так сойдет.
0
fess
23.05.2011, 04:09
'если любой вариант имеет право на жизнь, то ничего исправлять и совершенствовать не нужно'
не вижу логики.
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
23.05.2011, 06:19
- Ты суслика видишь?
- Нет.
- И я Нет. А он есть.
- Понял...
(Цитата к/ф ДМБ)
0
fess
23.05.2011, 06:24
5 баллов!
закрыли тему
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 12
08.07.2011, 07:15  [ТС]
не знаю увидят мой ответ или нет, но выскажусь, любезный fess есливы внимательно читали всю тему то понили бы вариант с активной ячейкой полдходит как нельзя лучше, чем target , потому что нужно определить зарание объедены ли ячейки или нет, а я зарание не могу знать (точней не я а программа) объеденены ли ячейки, ваш вариант тоже интересен, но не в моем конкретном случае :-)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.07.2011, 07:15
Помогаю со студенческими работами здесь

Обратная связь
Ребят, помогите, пожалуйста. Что не так с кодом? форму заполняю, письмо вроде отправляется, но на почте пусто. В спойлерах html php и js...

Обратная связь
Есть уже готовый HTML и CSS файлы, надо подключить форму обратной связи. Какой код для PHP файла и как его подключить.

Обратная связь
Добрый день. Ребята, помогите с PHP, кому не сложно. Есть обратная страница сайта, загрузил все базы на html страницу в системе uCoz. с php...

Обратная связь
Вот код HTML страницы с формой обратной связи: &lt;title&gt;Обратная связь&lt;/title&gt; &lt;center&gt; &lt;font size=5 style=&quot;font-family:...

Обратная связь C#
Вот он код, на обратную связь, подскажите как поставить условие Если нажата кнопка отправить (&lt;asp:Button runat=&quot;server&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru