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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2013, 00:56   #1
tsap
Пользователь
 
Аватар для tsap
 
Регистрация: 17.05.2008
Сообщений: 33
Вопрос Уменьшение кода макроса

Добрый день всем завсегдатаям форума!

Возникла ситуация следующего характера:
На листе Эксель имеется порядка 10 текстовых полей, при нажатии на которые должен в определенную ячейку записываться текст, введенный в текстовое поле. Получается 10 разных процедур с дублированием операции. Можно ли как-то это упростить, или это и все?
Сейчас код выглядит так:
Код:
Sub TextBox10_Щелчок()
Dim Curobj As Object
Dim text As String
Set Curobj = ActiveSheet.Shapes(Application.Caller).OLEFormat.Object
text = Curobj.text
Worksheets("inf").Range("c2").Value = text
End Sub
tsap вне форума Ответить с цитированием
Старый 06.12.2013, 09:27   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

1) Всем текстбоксам назначаем один и тот же макрос
2) адрес ячейки, куда попадет текст, прописываем в свойстве TAG текстбокса

Макрос будет выглядеть так:

Код:
sub TextToCell()
On Error Resume Next
  with ActiveSheet.Shapes(Application.Caller).OLEFormat.Object
      Worksheets("inf").Range(.tag).Value = .text
  end with
end sub
PS: зачем вообще макрос?
почему бы текстбоксы не связать сразу с нужными ячейками?
или, вообще, не сделать ввод напрямую в ячейки?

Последний раз редактировалось EducatedFool; 06.12.2013 в 09:34.
EducatedFool вне форума Ответить с цитированием
Старый 06.12.2013, 10:32   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну или как вариант - написать один исполняющий работу макрос с параметром (или двумя), куда посылать по нажатию сам текстбокс.
Чтоб писать код - нужен пример файла.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 08.12.2013, 22:20   #4
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Цитата:
На листе Эксель имеется порядка 10 текстовых полей,
Sub TextBox10_Щелчок()
В какой версии есть такие процедуры?
в моих трёх (2003, 2007, 2010) нет таких
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 08.12.2013, 22:22   #5
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Как вариант можно засунуть все текстбоксы в массив и назначит одну процедуру
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 09.12.2013, 04:25   #6
tsap
Пользователь
 
Аватар для tsap
 
Регистрация: 17.05.2008
Сообщений: 33
По умолчанию

Во-первых, извиняюсь за столь долгий ответ- не было возможности отписаться раньше .
Во-вторых, спасибо всем,кто откликнулся на мой вопрос, и тем самым помог в небольшой оптимизации сего "творения" =) .
Скажу сразу, последовал совету и завязал все текст-боксы на 1 макрос, немного изменив код, как подсказал EducatedFool. Прикрепляю файл (с условными названиями и картинками), кому интересно, для чего все эти заморочки с текст-боксами и прочим..
Кратко отвечу на вопросы:
Цитата:
Сообщение от EducatedFool Посмотреть сообщение
PS: зачем вообще макрос?
почему бы текстбоксы не связать сразу с нужными ячейками?
или, вообще, не сделать ввод напрямую в ячейки?
Все 10 завязаны с 1 ячейкой. В зависимости от выбора пользователя, текст в этой ячейке должен поменяться.
Цитата:
Сообщение от alex77755 Посмотреть сообщение
В какой версии есть такие процедуры?
в моих трёх (2003, 2007, 2010) нет таких
в 2013
Вложения
Тип файла: rar ФОРМА_тест2.rar (169.7 Кб, 10 просмотров)
tsap вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уменьшение размера изображения на php уменьшение качества картинки пример class php jpeg gif png xzxz PHP 2 19.11.2012 11:11
Вызов макроса внутри другого макроса. Небесный Microsoft Office Word 1 05.11.2012 22:38
уменьшение числа undead92 Общие вопросы Delphi 2 17.04.2012 12:05
уменьшение длины кода Magnetic Air Microsoft Office Excel 8 02.12.2011 11:30
Запуск макроса с параметрами из другого макроса Saladin Microsoft Office Excel 2 19.01.2009 09:43