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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2009, 10:09   #1
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию Скопировать выделенную часть ячейки!

Добрый день!

Подскажите как скопировать ВЫДЕЛЕННУЮ ЧАСТЬ ячейки?
nikolai_P вне форума Ответить с цитированием
Старый 05.05.2009, 10:17   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Через буфер обмена. А кто выделяет часть ячейки?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 05.05.2009, 10:24   #3
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию

Алгоритм выглядит следующим образом.
Человек щелкает два раза по ячейки, выделяет нужный кусок текста, затем нажимает правой кнопкой, выбирает в контекстном меню "отправить" и далее макрос копирует выделенный диапазон в нужное место (к примеру на лист "Справочник" в последнюю пустую ячейку)
nikolai_P вне форума Ответить с цитированием
Старый 05.05.2009, 10:42   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А команду "отправить" в контекстном меню Вы сами назначили?
По этой команде копируйте в буфер обмена выделенный текст. Затем вставляйте куда нужно. Так, например, следующий код выведет в окно сообщений Excel данные, находящиеся в буфере обмена:
Код:
Dim MyDataObj As New DataObject
    MyDataObj.GetFromClipboard
    MsgBox MyDataObj.GetText
Не забудьте предварительно подключить библиотеку "Microsoft Forms 2.0 object".
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 05.05.2009, 10:48   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Добавить пункт в контекстное меню можно так:

Код:
Sub ДобавлениеПунктаВМеню()
    CommandBars("Formula Bar").Reset
    Dim contr As CommandBarButton
    Set contr = CommandBars("Formula Bar").Controls.Add(1, , "test", 1, False)
    contr.Enabled = True: contr.Caption = "Отправить по почте": contr.FaceId = 24
    ' contr.OnAction = "test2"
End Sub
Вот только при работе с текстом внутри ячейки, насколько я помню, Excel блокирует обработку всех команд, поэтому, несмотря на то, что пункт в контекстное меню добавился, и он доступен, макрос, назначенный этой кнопке контекстного меню, не срботает...
EducatedFool вне форума Ответить с цитированием
Старый 05.05.2009, 11:00   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Excel блокирует обработку всех команд, поэтому, несмотря на то, что пункт в контекстное меню добавился, и он доступен, макрос, назначенный этой кнопке контекстного меню, не срботает...
Совершенно верно. Поэтому, нужно выделять требуемую часть данных ячейки, копировать в буфер обмена, затем выходить из режима редактирования ячейки и запускать Ваш макрос уже каким-то другим способом. При этом данные, находящиеся в буфере обмена будут доступны.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 05.05.2009, 11:05   #7
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию

Почему-то не смог найти у себя библиотеку "Microsoft Forms 2.0 object". У меня Офис 2007. Может она как-то по другому называться?

Буду признателен если скините действующий пример
nikolai_P вне форума Ответить с цитированием
Старый 05.05.2009, 11:30   #8
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию Парадокс...

Уважаемые SAS888 и EducatedFool!
У меня было предчувствие, что я получу такой ответ, вот только невольно хочется спросить:
"Когда по выделенному тексту в ячейки кликаешь правой кнопкой появляется контекстное меню, в котором активны кнопки"вырезать", "копировать" ... Разве это не макросы?
nikolai_P вне форума Ответить с цитированием
Старый 05.05.2009, 12:27   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Когда по выделенному тексту в ячейки кликаешь правой кнопкой появляется контекстное меню, в котором активны кнопки"вырезать", "копировать" ... Разве это не макросы?
Это не макросы. Это встроенные функции Excel. А встроенные функции вызываются совершенно иначе..

Если Вы запускали макрос ДобавлениеПунктаВМеню, то могли видеть, что он создаёт такой же пункт меню, как и остальные.

Но на время редактирования ячейки макросы недоступны, поскольку Вы фактически работаете не с листом, а с нарисованным поверх него комбобоксом. А когда Excel создаёт подобные элементы поверх листа, он блокирует всю свою функциональность, кроме непосредственно обработчиков событий комбобокса.
EducatedFool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с помощью макроса скопировать значение всей строки(не одной ячейки, а нескольких) global Microsoft Office Excel 6 27.11.2008 17:43
ListBox ----- выполнить выделенную строку! Disday Общие вопросы Delphi 13 05.11.2008 20:37
как скопировать часть объединенной ячейки? Азамат Microsoft Office Excel 20 14.07.2008 22:50
Часть фона одним цветом а другая часть другим (без таблиц). Lanselot HTML и CSS 4 25.04.2008 18:41
Как вытащить только часть символов из ячейки? Berkley Microsoft Office Excel 5 22.12.2006 00:43