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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2020, 21:13   #1
cutie pie
Новичок
Джуниор
 
Регистрация: 04.05.2020
Сообщений: 4
По умолчанию Автозаполнение таблицы

Добрый день! Не нашла похожую тему.

Общая задача следующая. В книге есть 12 листов и 13-й - сводный. На каждом из 12 листов есть кнопка запуска макроса разлиновки нужного количества полей таблицы и подстановки формулы (в столбец 3). Макросы относятся к объектам Worksheet (к Листам). Каждый макрос имеет своё уникальное название, как например "Заполнение_полей_таблицы_фундамент а"

Есть UserForm "Дефекты", на ней 2 TextBox и Label и 1 CommandButton.

ЮзерФорм не относится к конкретному листу, она в макросе каждого листа вызывается (.show) или убирается (.define).

В макросе листа решается задача ввести в ячейки таблицы значения из TextBox.

Столкнулась с проблемой, что по событию CommandButton_Click я не могу назначить действие ввести ячейки из текстбоксов.

Код пишу такой:
В Листе
Код:
Sub Заполнение_полей_таблицы_фундамента()
Dim n As Long
Dim razmer_fundament As Long
Range("A3:K200").Clear
Cells(1, 6).Clear
n = InputBox("Введите количество выявленных участков/дефектов")
razmer_fundament = InputBox("Введите общий размер фундамента - P(k)")
Cells(1, 6) = razmer_fundament
Dim oRange1 As Range
Dim oRange2 As Range
Set oRange1 = Range(Cells(3, 1), Cells((3 + n - 1), 7))
Set oRange2 = Range(Cells(3, 3), Cells((3 + n - 1), 3))
oRange1.Borders.Color = 3
MsgBox ("Введите данные в таблицу")
Дефекты.Show

Cells((3 + n), 6) = "Ф(к) - физический износ фундамента ="
Cells(3 + n, 7) = WorksheetFunction.Sum(Range(Cells(3, 7), Cells(2 + n, 7)))
Cells(3 + n, 4) = WorksheetFunction.Sum(Range(Cells(3, 4), Cells(2 + n, 4)))

Worksheets("Свод").Range("F3").Value = Cells(3 + n, 7)
End Sub

Sub Ввод_данных_по_кнопке()
Dim i As Integer
i = 1
Do While i <= n
Cells(2 + i, 2) = Дефекты.Название_участка.Text
Cells(2 + i, 3) = Дефекты.Размер_дефектного_участка.Text
i = i + 1
Дефекты.Название_участка.Value = ""
Дефекты.Размер_дефектного_участка.Value = ""
Loop
Дефекты.Hide
End Sub
В самой кнопке
Код:
Private Sub Ввести_Click()
Worksheet("Фундаменты").Ввод_данных_по_кнопке
End Sub
cutie pie вне форума Ответить с цитированием
Старый 05.05.2020, 02:39   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
я не могу назначить действие ввести ячейки из текстбоксов
а что мешает это сделать?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 05.05.2020, 12:02   #3
cutie pie
Новичок
Джуниор
 
Регистрация: 04.05.2020
Сообщений: 4
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
а что мешает это сделать?
пишет, Runtime error 424, object required. Ошибка в коде кнопки.
Я перепробовала несколько видов указания на процедуру Ввод_данных_по_кнопке:
- через ActiveSheet
- через WorkSheet("Фундаменты")
- через Фундаменты.Ввод_данных_по_кнопке

Пробовала указывать в коде кнопки переменные через ByVal i as integer, n as Long

Последний раз редактировалось cutie pie; 05.05.2020 в 12:24.
cutie pie вне форума Ответить с цитированием
Старый 05.05.2020, 14:14   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

12 листов и 12 макросов одинаковых Ввод_данных_по_кнопке в коде каждого листа?

в инспекторе как записано, Лист1(Фундаменты) ?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 05.05.2020 в 14:23.
Aleksandr H. вне форума Ответить с цитированием
Старый 05.05.2020, 18:43   #5
cutie pie
Новичок
Джуниор
 
Регистрация: 04.05.2020
Сообщений: 4
По умолчанию

Да, именно так.
Лист2 (Фундаменты).
скриншот.bmp

Пока что макрос 1 только на листе 2. Планировала потом его размножить, чтобы из активного листа запускать макрос кнопкой на этом же листе.
cutie pie вне форума Ответить с цитированием
Старый 05.05.2020, 18:52   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от cutie pie Посмотреть сообщение
Я перепробовала несколько видов указания на процедуру Ввод_данных_по_кнопке:
- через ActiveSheet
- через WorkSheet("Фундаменты")
- через Фундаменты.Ввод_данных_по_кнопке
Цитата:
Сообщение от cutie pie Посмотреть сообщение
Да, именно так.
Какой вариант осталось попробовать?

Код:
Планировала потом его размножить, чтобы из активного листа запускать макрос кнопкой на этом же листе.
есть такой принцип - DRY - Don't Repeat Yourself - не повторять один и тот же код в разных местах. Лучше сделать код в отдельном модуле, а как параметр макросу передавать нужный Лист
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 05.05.2020, 22:16   #7
cutie pie
Новичок
Джуниор
 
Регистрация: 04.05.2020
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
есть такой принцип - DRY - Don't Repeat Yourself - не повторять один и тот же код в разных местах. Лучше сделать код в отдельном модуле, а как параметр макросу передавать нужный Лист
Я пока не осилила эту часть vba Буду рада, если подскажите, как лучше это делать.
А так, конечно, понимаю, что надо упрощать код.
Но вот, я даже внутри одного листа не могу кнопку запустить.
cutie pie вне форума Ответить с цитированием
Старый 05.05.2020, 22:44   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

+- такой подход
Вложения
Тип файла: xls TestUserForm.xls (41.5 Кб, 5 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автозаполнение таблицы Евгений Б Microsoft Office Excel 1 26.07.2014 01:48
Автозаполнение следущей строки таблицы Окоча Юра Microsoft Office Word 3 05.05.2010 09:23
Автозаполнение таблицы. agregator Microsoft Office Excel 10 27.10.2009 12:54
автозаполнение таблицы. Warlock Microsoft Office Excel 6 25.12.2008 11:13
dephi/sql автозаполнение таблицы??? Geddar Помощь студентам 12 23.05.2008 08:31