Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
Супер-Помогатор
 Аватар для antal10
1035 / 621 / 132
Регистрация: 26.12.2013
Сообщений: 1,975

Автоматическое заполнение накладной

30.03.2016, 11:14. Показов 4568. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Помогите решить проблему заполнения накладной.
Из листа Заявки нужно перенести заполненные данные в лист Форма. Задача для меня неимоверно сложная, так как во-первых, особо в VBA не силен, а во-вторых усложнена условиями заполнения (необычные копирование/вставка).
Вопрос: Как можно заполнить накладную(Форма) нажатием одной кнопки по уже имеющимся заполненным данным с листа Заявки. Заполнение накладной должно происходить строго в порядке веса, с разделением весов одной пустой строкой. Пример в файле.
Накладная жесткая, т.е. все в пределах строк 10:40. Заранее спасибо.
Вложения
Тип файла: rar наклад.rar (116.5 Кб, 68 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.03.2016, 11:14
Ответы с готовыми решениями:

Автоматическое заполнение inputbox
Добрый день уважаемые спецы. При открытии книги excel у меня вываливается inputbox для ввода данных. Подскажите, пожалуйста, можно ли...

Автоматическое заполнение ячеек матрицы
Помогите написать код программы, чтобы при нажатии на кнопку автоматически выбиралась размерность матрицы (от 2x2 до 9x9), а также...

Автоматическое заполнение из исходных данных
Здравствуйте, есть исходная таблица со столбцами, к примеру: ФИО, возраст, вес, рост, пол. Эта таблица уже заполнена. Нужно на другом листе...

14
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,934
Записей в блоге: 4
30.03.2016, 11:33
не поняла, а что делать, если очередная группа не влезает в строки 10-40
например по 8кг будет не 6 строк, а 9
Миниатюры
Автоматическое заполнение накладной  
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,934
Записей в блоге: 4
30.03.2016, 11:41
и всегда ли название товара или сумма прописью влезает в строку
Набор №1 (Капуста со свеклой)
Набор №2 (Морская капуста)
Набор №12 (Кальмары)
0
Супер-Помогатор
 Аватар для antal10
1035 / 621 / 132
Регистрация: 26.12.2013
Сообщений: 1,975
30.03.2016, 20:14  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
не поняла, а что делать, если очередная группа не влезает в строки 10-40
например по 8кг будет не 6 строк, а 9
Диапазон вставки всегда фиксированный, т.е. данные должны вставляться в диапазон B10:G40 остальные ячейки в расчет не берутся.
shanemac51, количество наименований не будет превышать количества ячеек в накладной. Такого не будет. Если количество наименований когда нибудь и будет превышать количество строк накладной, заказ будет разбиваться на 2 накладные. Так что это не в счет, на это можно не обращать внимания.
Цитата Сообщение от shanemac51 Посмотреть сообщение
и всегда ли название товара или сумма прописью влезает в строку
Набор №1 (Капуста со свеклой)
Набор №2 (Морская капуста)
Набор №12 (Кальмары)
Тут не понял вопроса.

Добавлено через 2 часа 35 минут
Ни у кого нет соображений на этот счет?

Добавлено через 5 часов 51 минуту
Я так понял задача нерешаема или может объяснил плохо.
Все еще актуально
0
Супер-Помогатор
 Аватар для antal10
1035 / 621 / 132
Регистрация: 26.12.2013
Сообщений: 1,975
01.04.2016, 15:19  [ТС]
Хоть подскажите в какую сторону копать.
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
01.04.2016, 17:13
Копай, не копай а изучать VBA то надо, чтоб себе помогать...
Для начала попробуй такой макрос:
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
Sub zap_nakladnoy()
    Dim i&, j&, n&, k&
    Sheets("Заявки").Activate
    a = Range("a2").CurrentRegion.Value
    Sheets("Форма").Activate
    With Range("A10:G40")
        .ClearContents
        b = .Value
        For j = 2 To UBound(a, 2)
            k = 1
            For i = 2 To UBound(a, 1)
                If Not IsEmpty(a(i, j)) Then
                    If n > 40 Then GoTo Vivod
                    n = n + 1
                    b(n, 1) = k
                    b(n, 2) = a(i, 1)
                    b(n, 6) = a(i, j)
                    b(n, 7) = CDbl(a(1, j))
                    k = k + 1
                End If
            Next
            n = n + 1
        Next
Vivod:
        .Value = b
    End With
End Sub
Добавлено через 27 минут
Немного ошибся, надо заменить строку:
Visual Basic
1
                   If n > 40 Then GoTo Vivod
на
Visual Basic
1
                   If n > 30 Then GoTo Vivod
1
Супер-Помогатор
 Аватар для antal10
1035 / 621 / 132
Регистрация: 26.12.2013
Сообщений: 1,975
09.04.2016, 00:09  [ТС]
Наконец-то добрался до своей накладной.

Спасибо toiai, за проявленный интерес к моей теме. Но есть нюансы.

Макрос загибается на .ClearContents плюс к тому же ругается на защищенный лист.
Лист формы и по правде защищен, но данные, которые вносятся, они вносятся на незащищенные ячейки, которые я указал в сообщении #4.

Я конечно же попробовал изменить диапазон вашего макроса A10:G40 на свой B10:G40, чтобы не брались в расчет защищенные ячейки, но в этом случае вылезла другая подсвеченная ошибка в:
Visual Basic
1
b(n, 7) = CDbl(a(1, j))
Поэтому работоспособность макроса не получилось проверить.

Очень надеюсь на помощь гуру, потому как невсилах сам. А таки надо, Уася.
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
09.04.2016, 09:37
Макрос проверен на твоем файле, правда лист был без защиты.
Для снятия защиты (а в Вас защита без пароля) в начале макроса добавить строку:
Visual Basic
1
Sheets("Форма").UnProtect
а в конце
Visual Basic
1
Sheets("Форма").Protect
1
Супер-Помогатор
 Аватар для antal10
1035 / 621 / 132
Регистрация: 26.12.2013
Сообщений: 1,975
09.04.2016, 10:28  [ТС]
toiai, спасибо, вроде бы сработал ваш макрос. Но есть небольшой нюанс, я уже писал.
Ячейки A:A в накладной в расчет не берутся, номера проставлять не надо, т.е. заполнение происходит в диапазоне B10:G40. Просто номера проставляются формулами, так как заполнение накладной может быть и ручное в форме.
Подскажите что убрать или переделать в вашем макросе, чтобы столбец А в расчет не брался, т.е. нумеровать товар не надо. Я пробовал изменить диапазон в макросе, но как писал ранее выскакивает ошибка на
Цитата Сообщение от antal10 Посмотреть сообщение
Visual Basic
1
b(n, 7) = CDbl(a(1, j))
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
09.04.2016, 11:02
Если подсчет нумерации не надо, то немного изменил макрос:
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
Sub zap_nakladnoy()
    Dim i&, j&, n&, k&
    Sheets("Заявки").Activate
    a = Range("a2").CurrentRegion.Value
    Sheets("Форма").Activate
    With Range("B10:G40")
        .ClearContents
        b = .Value
        For j = 2 To UBound(a, 2)
            k = 1
            For i = 2 To UBound(a, 1)
                If Not IsEmpty(a(i, j)) Then
                    If n > 30 Then GoTo Vivod
                    n = n + 1
                    'b(n, 1) = k
                    b(n, 1) = a(i, 1)
                    b(n, 5) = a(i, j)
                    b(n, 6) = CDbl(a(1, j))
                    'k = k + 1
                End If
            Next
            n = n + 1
        Next
Vivod:
        .Value = b
    End With
End Sub
1
Супер-Помогатор
 Аватар для antal10
1035 / 621 / 132
Регистрация: 26.12.2013
Сообщений: 1,975
10.04.2016, 17:47  [ТС]
Спасибо, все вроде как работает, но есть нюансы, заполнение происходит не сначала накладной, т.е. не с ячейки B10 и промежутки между весами получаются не по одной строке, а по несколько. Как это можно исправить?
Промежуток между весами должен быть всегда одна строка при любом раскладе, даже если веса какого-то нет. Как например на скрине 3 кг нет и пропущено 2 строки
Миниатюры
Автоматическое заполнение накладной  
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
10.04.2016, 19:38
Пришли пример, так не понять в чем проблема.
1
Супер-Помогатор
 Аватар для antal10
1035 / 621 / 132
Регистрация: 26.12.2013
Сообщений: 1,975
10.04.2016, 22:47  [ТС]
высылаю пример.
Теперь пояснения. Если нет весов 200, 300 и т.д. Заполнение происходит не с первой ячейки B10. Если отсутствуют какие либо веса например 3 кг, то между весами 2 и 8 получается 2 строки разрыв, а нужна одна, как между...
Файл пример прилагаю. Хотя предыдущий скрин чотко показывает, что заполнение происходит не с первой строки B10, когда веса 200 г в накладной нет. и промежуток между весом 2 и 8 кг получается в 2-е строки.
Миниатюры
Автоматическое заполнение накладной  
Вложения
Тип файла: rar наклад.rar (122.9 Кб, 56 просмотров)
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
11.04.2016, 11:55
Лучший ответ Сообщение было отмечено antal10 как решение

Решение

Вот решение проблемы пустых строк:
Кликните здесь для просмотра всего текста
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
Sub Кнопка18_Щелчок()
Dim i&, j&, n&, p As Boolean
    Sheets("Заявки").Activate
    a = Range("a2").CurrentRegion.Value
    Sheets("Форма").Activate
    With Range("B10:G40")
        .ClearContents
        b = .Value
        For j = 2 To UBound(a, 2)
            p = False
            For i = 2 To UBound(a, 1)
                If Not IsEmpty(a(i, j)) Then
                    If n > 30 Then GoTo Vivod
                    p = True
                    n = n + 1
                    b(n, 1) = a(i, 1)
                    b(n, 5) = a(i, j)
                    b(n, 6) = CDbl(a(1, j))
                End If
            Next
            If p Then n = n + 1
        Next
Vivod:
        .Value = b
    End With
End Sub
0
Супер-Помогатор
 Аватар для antal10
1035 / 621 / 132
Регистрация: 26.12.2013
Сообщений: 1,975
11.04.2016, 20:49  [ТС]
Урааа, работает. Спасибо toiai
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2016, 20:49
Помогаю со студенческими работами здесь

Автоматическое заполнение столбца по условиям
Хочу сделать так, чтобы при выделении цветом ячейки в диапазоне AG5:AR5 и наличия в этом диапазоне знака "+" (не обязательно...

Автоматическое заполнение столбцов из одной ячейки
Добрый день. Проблема в следующем, есть столбец В, и ячейка E4. Как сделать чтобы при вводе суммы в ячейку E4 , столбец В автоматически...

Автоматическое заполнение листов по нажатию кнопки
Здравствуйте. Помогите написать макрос. Нужно что бы по нажатию на кнопку "Заполнить". все остальные листы заполнялись (столбиком)...

Автоматическое заполнение ячеек с интернет страницы
Доброго все времени суток. Есть следующая задача: имеем пустой документов с ячейками А1; В1; С1 и т.д. необходимо что бы при добавление...

Автоматическое заполнение таблицы в соответствии со сроками макросом
Уважаемые форумчане, прошу помощи в решении следующей проблемы. Для примера создал файл, как это сейчас существует, только в гораздо...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru