Я хочу создать рабочий лист, который можно использовать в качестве печатного чека для клиентов. Вот его базовый макет:
- Контактные данные клиента (имя, адрес и т. д.) — это фиксированные поля, которые могут быть пустыми.
- Строка заголовка: «Товар|Кол-во|цена|итого»
- Динамическая таблица, содержащая любое количество строк, по одной для каждого товара, который покупает клиент.
- Строка нижнего колонтитула, содержащая общее количество статей и общую сумму
Я борюсь с тем, как заставить работать динамическую таблицу. Сейчас я вручную вставляю строку для каждой новой статьи, но это неудобно в ситуациях, когда она очень загружена. Я бы хотел, чтобы Excel по умолчанию показывал одну пустую строку, а затем вставлял следующую строку каждый раз, когда предыдущая строка содержит какие-либо данные, автоматически перемещая строку нижнего колонтитула на одну строку вниз и обновляя формулу, используемую для расчета общего количества и суммы.
Это вообще возможно?
решение1
Просто в качестве предупреждения вам и всем остальным, кто попытается это сделать:
Прямо сейчас вам следует подумать о:
- Как часто я буду использовать это для каждого клиента?
- сколько у вас клиентов?
- как мне ввести эти элементы?
- Сколько существует различных предметов?
Это самые важные вопросы. Я сделал довольноточното, что вы пытаетесь сделать, для очень маленькой компании, с примерно 3 чеками в месяц.
Как всегда, пожалуйста, быстро и дешево и только в Excel. Однако никто не задавал эти вопросы выше. В основном из-за дешево и только в Excel. И теперь так очевидно, сколько времени теряется, всякий раз, когда квитанция ищется, исправляется, но в основном при добавлении товаров. Не говоря уже о том, сколько разных форм одного и того же товара существует. Исправление этого с помощью Excel, однако, возможно, но, ИМХО, это настоящая боль. Убедил и клиента, EPR теперь настроен.
Это задача базы данных. Это как один из лучших примеров задачи базы данных!
Далее, это может быть даже стоить малому бизнесу ERP-системы. Здесь, в Германии, я бы рекомендовал вам JTL-Wawi.
Но если это слишком большой шаг, вам стоит задуматься об использовании Access.
Некоторые преимущества:
- вы можете управлять своими клиентами
- Вы можете управлять своими предметами
- вы можете переместить свое динамическое поведение для доступа
- Вы можете легко управлять своими квитанциями
- вы по-прежнему можете использовать Excel в качестве системы вывода
Как это будет работать?
У вас будут некоторые таблицы, для клиентов и товаров, и для чеков. Таблица чеков будет связывать клиента с его товарами и другими атрибутами, относящимися к чеку.
Затем вы можете создать разработанный отчет для базового чека и распечатать его из Access. Или использовать Excel для выбора чека, получения данных и их печати. Поскольку данные будут предопределены, вы будете знать, сколько строк/столбцов поступает и каков их контекст.
Однако - это колесо уже было изобретено много раз, так что вам стоит взглянуть на уже существующие ;)
Редактировать
Решение, основанное на вашем поведенческом запросе, может использовать эту попытку здесь:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = clngColumnRightToLastGrade Then
Application.EnableEvents = False
'offset selection, one row down, two cols to left
Target.EntireRow.Insert (xlShiftDown) 'insert new row
Target.Offset(1, -2).Select
Application.EnableEvents = True
End If
End Sub
Конечно, вы можете использовать Change
вместо этого событие, и вам, возможно, придется ограничить это поведение максимальным диапазоном вашего динамического списка или его рабочим листом.
Или просто сделайте макрос доступным для сочетания клавиш, чтобы выполнить эту строку:
Target.EntireRow.Insert (xlShiftDown) 'insert new row
Вам нужно будет определить текущую выбранную ячейку, чтобы получить Target
диапазон.