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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2011, 14:34   #1
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию Форма заполнения ячеек

Помогите пожалуйста оптимизировать работу.
Во вложении пример который моделирует мою задачу, хотя и несколько минимально. Суть такова: есть немаленькая таблица у которой много стобцов, тоесть они уходят все за экран вправо. Так как надо часто редактировать таблицу приходится уходить вправо и искать нужную ячейку, что иногда создает трудности. Впринципе я создал форму с TextBox-ами которые заполняют нужные мне ячейки, но получается так что таких текстбоксов очень уж много (каждый со своим форматом записи в ячейку), тем более что табличка не часто но растет вниз. Скажу чесно терпения у меня еле-еле хватило что бы написать код для одной строки.
Можно ли создать привязаную к ячейке А1 (см. вложеный файл) кнопку которая бы заполняла несколько ячеек справо от себя (В1, С1, D1-для файла) с возможностью ее копировать для строки ниже? В макросе я использую абсолютные ссылки на ячейки, может быть нужно использовать относительные, но я не знаю как.
Вложения
Тип файла: rar Для примера.rar (12.8 Кб, 24 просмотров)
Severny вне форума Ответить с цитированием
Старый 22.08.2011, 18:29   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Щёлкаем по нужной ячейке в столбце А
И вводим данные
Вложения
Тип файла: rar Для примера.rar (18.2 Кб, 41 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 22.08.2011, 23:55   #3
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

Благодарю Вас!
Если Вы не против, могу я задать пару уточняющих вопросов?
DisplayIcon, DisplayIcon1, DisplayIcon2 Зачем 3 штуки?
И какми образом Вы заставили фигуру выскакивать из активной ячейки?

Последний раз редактировалось Severny; 23.08.2011 в 00:02.
Severny вне форума Ответить с цитированием
Старый 23.08.2011, 01:26   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
И какми образом Вы заставили фигуру выскакивать из активной ячейки?
Кликом по ячейке
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set oIcon = Nothing
If Target.Rows.Count = 1 And Target.Columns.Count = 1 _
And Target.Column = 1 Then
  Set oIcon = New ICONNS
 oIcon.DisplayIcon Me, Target.Top, Target.Left + Target.Width, Target.Height
End If
End Sub
В модуле класса выполняется процедура
Код:
   Public Sub DisplayIcon(oSheet As Worksheet, lTop As Long, lLeft As Long, lHeight As Long)
 On Error Resume Next

  Set oShape = oSheet.Shapes.AddShape(msoShapeRectangle, lLeft, lTop, 19, lHeight)

  oShape.Fill.Transparency = 0.5
  oShape.Fill.Solid
  oShape.Fill.Visible = msoCTrue
  oShape.Line.Weight = 0.25
 oShape.Line.ForeColor.SchemeColor = 8' Поиграйтесь с цветовой гаммой
  oShape.Fill.ForeColor.SchemeColor = 15'

  oShape.Placement = xlFreeFloating
  oShape.OnAction = "Command"

     End Sub
используйте одну.
Это я со старого проекта выдернул.
Работа была в разных диапазонах.И у каждой кнопки был свой цвет и макрос
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 23.08.2011 в 01:33.
doober вне форума Ответить с цитированием
Старый 23.08.2011, 11:12   #5
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

Благодарю. Можно еще проликбезить
Код:
If Target.Rows.Count = 1 And Target.Columns.Count = 1 _
And Target.Column = 1 Then
?
Severny вне форума Ответить с цитированием
Старый 23.08.2011, 11:17   #6
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

И еще такой момент, уже касательно формы.
Как сделать так что бы когда открывается форма, то в ТексБоксах уже стояли значения ячеек, которые потом можно редактировать?

Решил:
Код:
Private Sub UserForm_Activate()
  Set oIcon = Nothing
  TextBox1.Value = ActiveCell.Offset(0, 1)
End Sub

Последний раз редактировалось Severny; 23.08.2011 в 11:33. Причина: Нашел решение
Severny вне форума Ответить с цитированием
Старый 23.08.2011, 11:32   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Target - это диапазон ячеек (см.в обьявлении процедуры)
If Target.Rows.Count = 1 в диапазоне 1 строка
And Target.Columns.Count = 1 в диапазоне 1 колонка
And Target.Column = 1 Then это находится в первой колонке.
диапазон содержащий 1 строку и одну колонку - это ячейка.
поэтому можно было переписать

If Target.Cells.Count = 1 And Target.Column = 1 then...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.08.2011, 11:36   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Волоски в бороде на исходе.
Все в файле
Вложения
Тип файла: rar Для примера.rar (20.0 Кб, 38 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.08.2011, 11:10   #9
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

Спасибо! Изучаю предложеный материал
Severny вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма заполнения Авансового Отчета - Нужно содействие! stkats Microsoft Office Excel 2 22.12.2010 00:10
необычная форма заполнения designer999 Работа с сетью в Delphi 1 28.06.2010 15:19
Форма для заполнения данных по зарплате сотрудников по месяцам touchka Microsoft Office Access 1 04.02.2010 22:46
Алгоритм заполнения ячеек Иван_1651 Microsoft Office Excel 3 11.03.2009 21:27