Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 9
1
Excel

Создание макроса автозаполнения

16.12.2018, 02:12. Показов 1992. Ответов 12
Метки нет (Все метки)

Всем привет!

Подскажите, пожалуйста, как сделать проще, если данная задача не решаема. Я совсем замучилась уже. Я в этом деле новичок
=(

У меня есть пользовательская форма. Добавляется несколько значений, например: вводится наименования тортов, количество, дата покупки, дата поставки, имя клиента (который это заказал). Далее нажимается на кнопочку и динамическая таблица в соответствии с заданными условиями заполняется. Тут вопросов нет.

Однако, бывает так, что один торт Прага заказывает сразу 2 клиента (а может и больше). И задача звучит так, чтобы в поле клиенты можно было указать "Все клиенты" и строчки таблицы из формы заполнились по каждому клиенту с этим несчастным тортом и полной инфой по нему. Т е добавляются сразу например 5 строчек, инфа по торту одна, а клиенты разные.

Такая магия возможна?

Заранее спасибо! Очень надеюсь на ваш совет и помощь=)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2018, 02:12
Ответы с готовыми решениями:

Создание макроса
Добрый вечер! Такое задание. Создать макрос, изменяющий шрифт выделенного текста на Arial 16,...

Создание макроса new!
Нужно с помощью макроса отсортировать данные так, чтобы ФИО не повторялось, а код (столбец:код)...

Создание макроса
Доброго времени суток господа. Помогите решить проблему. Есть информация в текстовом виде такого...

Создание макроса
Здравствуйте! Помогите пожалуйста. Создаю макрос , а при выполнении макроса выдает: запрашиваемый...

12
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 9
16.12.2018, 17:31  [ТС] 2
Может, чтобы упростить задачу, подскажите, как вставить значения из таблицы в динамическую через VBA?

Пожалуйста, очень нужен ваш совет!

Добавлено через 23 минуты
Начала писать условие

If Base.Range("Clients").Value = "ALL" Then
Base.Range("W4:W").Select - пытаюсь выделить нужный диапазон, но как отобразить его корректно?
0
1581 / 656 / 223
Регистрация: 09.06.2011
Сообщений: 1,328
16.12.2018, 18:49 3
Цитата Сообщение от Kulaii Посмотреть сообщение
У меня есть пользовательская форма
а мы понятия о ней не имеем, как и о таблице ))
0
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 9
16.12.2018, 19:48  [ТС] 4
Пользовательская форма написана так: Я удалила пару строчек вида .Cells(nextRow, 7).Value = Base.Range( - потому что там просто перечень характеристик. Проблема в поле с Клиентами. В экселе у меня формочка, вбиваешь все данные и таблица на этом же листе заполняется. Но что делать если клиент из выпадающего списка не один? я добавила значение АLL. Т е при нажатии на список появляется ALL, Клиент1, Клиент2. А как заставить Эксель брать если ALL всех клиентов - для меня загадка.
Принцип такой - считается строчки по тортикам. Один клиент-один торт. Таблица заполнена. А вот Если выбрать значения все? Тортики все с параметрами подтягиваться не хотят в таблицу! Помоги, пожалуйста, я уже вторые сутки не сплю

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sub DataEntryForm()
Dim nextRow As Long
nextRow = Base.Cells(Base.Rows.Count, 3).End(xlUp).Offset(1, 0).Row
With Base
If .Range("B3").Value = "" And .Range("C3").Value = "" Then
nextRow = nextRow - 1
End If
Base.Range("Tort").Copy
.Cells(nextRow, 3).PasteSpecial Paste:=xlPasteValues
.Cells(nextRow, 4).Value = Base.Range("Postavshik").Value
.Cells(nextRow, 5).Value = Base.Range("Date").Value
.Cells(nextRow, 6).Value = Base.Range("Clients").Value
.Cells(nextRow, 7).Value = Base.Range("Count").Value
.Range("B3").Formula = "=IF(ISBLANK(C3), """", COUNTA($C$3:C3))"
' автоматическая нумерация строк
If nextRow > 2 Then
Range("B3").Select
Selection.AutoFill Destination:=Range("B3:B" & nextRow)
Range("B3:B" & nextRow).Select
End If
.Range("Diapason").ClearContents
End With
End Sub
Добавлено через 23 минуты
Step_UA, помоги, пожалуйста!

Я сейчас пытаюсь добавить условие на клиентов. Но это прям совсем плохо=(((((
0
1581 / 656 / 223
Регистрация: 09.06.2011
Сообщений: 1,328
16.12.2018, 21:13 5
Цитата Сообщение от Kulaii Посмотреть сообщение
А как заставить Эксель брать если ALL всех клиентов - для меня загадка.
Ну не обладаю я телепатическими способностями ... совсем их нет)) Откуда брать? Что за именованные диаппазоны? ... для помочь, я точно не буду воссоздавать по описнию файл
0
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 9
16.12.2018, 21:26  [ТС] 6
Step_UA, вот!

Посмотри, пожалуйста! Спаси меня=))
Вложения
Тип файла: xlsx 1_копия.xlsx (15.1 Кб, 5 просмотров)
0
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 9
16.12.2018, 21:34  [ТС] 7
Идея в том, что ты вводишь значения в Таблицу, где столбик "Form" из списка выбираешь клиента и жмешь ADD и все данные заполняются в таблицу. Потом если выбрать ALL, то вся информация должна сначала заполниться по клиенту 1,а потом по клиенту2 и так пока все клиенты не будут перебраны.
Я удалила кусок, кода где я пытаюсь это написать -потому что там совсем ужас=(( Мне стыдно такое показывать=(((
0
1581 / 656 / 223
Регистрация: 09.06.2011
Сообщений: 1,328
16.12.2018, 22:21 8
Лучший ответ Сообщение было отмечено Kulaii как решение

Решение

Не согласен с определением пустой строки, но указали что работает и ладно ... сделал только добавление по клиентам, нумерацию и дальше не трогал
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub DataEntryForm()
Dim nextRow As Long
nextRow = Base.Cells(Base.Rows.Count, 3).End(xlUp).Offset(1, 0).Row
With Base
If .Range("B3").Value = "" And .Range("C3").Value = "" Then
nextRow = nextRow - 1
End If
 ' **************
    ' nextRow содержит номер первой пустой строки для вставки
    Dim countClients&       ' количество клиентов - сократить умную таблицу клиентов, чтобы не было пустых значений
    Dim isAll As Boolean    ' на случай, если всего один клиент в таблице клиентов
    isAll = [Clients].Value = "ALL"
    If isAll Then
        countClients = [Clients_Table].Count - 1
    Else
        countClients = 1
    End If
    ' заполняем требуемое количество строк введенными данными
    Cells(nextRow, 3).Resize(countClients, 5).Value = WorksheetFunction.Transpose([Diapason].Value)
    If isAll Then   ' вставляем клиентов
        Cells(nextRow, 6).Resize(countClients).Value = [Clients_Table].Cells(2).Resize(countClients).Value
    End If
    ' дальше сами ...
 ' **************
 
' автоматическая нумерация строк
If nextRow > 2 Then
Range("B3").Select
Selection.AutoFill Destination:=Range("B3:B" & nextRow)
Range("B3:B" & nextRow).Select
End If
.Range("Diapason").ClearContents
End With
End Sub
1
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 9
16.12.2018, 22:25  [ТС] 9
Step_UA,
Спасибо! Сейчас все попробую!!

Там я делала один миллион попыток и данные уехали =( Если удалить все строчки в таблице и начать заново-то все ок. По-другому я не знаю, сделать.

Я все сейчас посмотрю! Спасибо! Я почувствовала ветер надежды ) Потому что вообще никто не мог помочь! Спасибо!
0
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 9
16.12.2018, 22:39  [ТС] 10
Step_UA, подскажи еще пожалуйста. Я пробую сделать с твоими доработками. Но у меня второй клиент вставляется, а первый принимает значение ALL. Почему так?
Вложения
Тип файла: xlsx 1_копия.xlsx (14.6 Кб, 5 просмотров)
0
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 9
16.12.2018, 22:54  [ТС] 11
Step_UA, и пустое значение прописалось ((( помоги еще, пожалуйста.

Добавлено через 14 минут
Step_UA, Кажется, я туплю ужасно. И есть мнение, что все в порядке
0
1581 / 656 / 223
Регистрация: 09.06.2011
Сообщений: 1,328
16.12.2018, 22:55 12
Может кто и поможет - я пас, мне это нужно никак не больше вашего ... собери конструктор лего: вот файл без макроса - добавь/свяжи ... "я пытаюсь доработать" - я не против ... "прописалось пустое значение" - зачем он эти коменты бил))
0
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 9
17.12.2018, 00:17  [ТС] 13
Step_UA, Я все прочитала, кажется вообще все работает, это я уже после двух дней нормально не спала и туплю ужасно. Спасибо тебе огромное! Ты нереально помог! И ты очень крутой!=))

Добавлено через 9 минут
Step_UA, И я сейчас открыла,а реально макроса нет. Но я его писала. И я вот думаю. Нажала сохранить все. И я не понимаю, почему его нет. Извини еще раз. И огромное спасибо!

Добавлено через 1 час 10 минут
Step_UA, Я окончательно разобралась )) у меня вообще все заработала. Косяк был в том, что в дальнейшем я часть твоего кода по своей глупости переназначала. И надо было вот этот момент убрать. А то получается ты сделал верно,а я исправляла на неверно. Спасибо еще раз!!! Ты меня спас! Я сегодня буду спаааать!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2018, 00:17

Создание макроса
Помогите. Нужно чтобы при нажатии кнопки "Узнать результат" он переходил на страницу с результатами...

Создание макроса
Нужен макрос, который будет из определенной папки переименовывать файл excel удалением сначала 16...

Создание макроса
Доброго времени суток! Помогите автоматизировать процесс! Есть две книги : книга1.xlsx и...

Программное создание макроса
Доброго времени суток, форумчане! Прошу помощи с кодом! Есть форма, в которой содержаться...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru