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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2011, 16:22   #11
LBlonde
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 15
По умолчанию

Спасибо большое за ответ и за то, что выделили время на мою задачу! Уже все выглядит намного лучше! Сейчас я отвечу на вопросы, а потом напишу, что у меня не совсем хорошо получается в этой программке.

Вообще, как мне кажется, у вас не совсем верный подход к организации данных в книге.

Взять хотя бы то, что вводимые данные дублируются на обоих листах.
По идее, данные лучше хранить на одном листе (к примеру, на Kundennummer), а на втором листе (Aufträge) выводить из формулами (занося в строку только Kunden-Nr. - все остальные данные подтягиваются из базы данных из строки с таким номером)


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

Также считаю неправильным изготовление отдельных форм для каждого из заказчиков.
Неужто заполняемые поля для разных заказчиков так сильно отличаются друг от друга?


Да, действительно поля отличаются. Дело в том, что именно этот первый заказчик - главный. Именно по нему ведутся клиентские номера и номера заказов (эта информация поступает от него) и та же база данных по клиентам.
Для остальных заказчиков планируется только ввод адреса клиента в строку заказов. Все остальные действия не нужны.

Вообще, какой смысл этой программы?
Для чего все эти формы? Какова конечная цель?


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

Пока же у нас все заказы в бумажном виде, из-за большого их количества они теряются и иногда можно проспать заказ. Кроме того, мы не видим, были ли выставлены счета по всем выполненным заказам.

Создание такой программы позволило бы:
1. Контролировать наличие заказов и их выполнение.
2. Быстрее создавать счета и не дублировать данные по клиенту, которые указываются в счете.
3. Автоматически создавать список счетов для контроля баланса.
4. Быстро найти соответствие между счетом и заказом.
LBlonde вне форума Ответить с цитированием
Старый 03.07.2011, 16:32   #12
LBlonde
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 15
По умолчанию

В общем, я сейчас протестировала программку, в лист клиентов данные заносятся, но в лист заказов заносятся только клиентский номер и номер заказа. Я понимаю, что это исправится, если как вы говорили, сделать это с помощью формул, чтобы не дублировать запись, но с другой стороны, хочу разобраться, почему не работает. Ведь вызов этой процедуры остался в коде.

И еще один вопрос: Вы исправили в моем коде много всего, можно сказать, переписали почти все Но все-таки, не могли бы вы мне объяснить на будущее: в чем была моя ошибка и почему я не могла выйти из последней формы?

Заранее спасибо за разъяснение.
LBlonde вне форума Ответить с цитированием
Старый 03.07.2011, 16:40   #13
LBlonde
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 15
По умолчанию

Цитата:
Private Sub OKNeu_Click()
Dim NextRowKundennummer As Range ' Vvod novogo klienta
Set NextRowKundennummer = Kundennummer.Range("a" & Kundennummer.Rows.Count).End(xlUp). Offset(1)
NextRowKundennummer.Resize(1, 5).Value = Array(KundenNr, NeuerMarkt, NeueAdresse, NeuePLZ, NeuerOrt)

Call NeuenAuftragEintragen ' Zapolnjaem stroku zakazov v liste Aufträge
Unload Me
End Sub
Как я поняла, проблема вот здесь: массив имеет имена текстовых полей, а вызываемая процедура работает с глобальными переменными, которые имеют другие имена. а как исправить?
LBlonde вне форума Ответить с цитированием
Старый 03.07.2011, 17:49   #14
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
проблема вот здесь: массив имеет имена текстовых полей, а вызываемая процедура работает с глобальными переменными, которые имеют другие имена
Да, я удалил строки с переменными, забыв, что переменные глобальные, и их значения могут понадобиться в других процедурах.

Добавьте после строки
Код:
NextRowKundennummer.Resize(1, 5).Value = Array(KundenNr, NeuerMarkt, NeueAdresse, NeuePLZ, NeuerOrt)
4 удалённых мной строки (где глобальным переменным присваиваются значения полей) - и всё заработает.

PS: Я вообще не использую глобальные переменные, и в этом проекте они тоже, по большому счёту, не нужны.
Но чтобы от них избавиться, пришлось бы ещё оптимизировать код (сократив его раза в 2-3), но вы тогда вообще запутаетесь, что и как работает.
К тому же, не увидев остальных форм, сложно сказать. будет ли такая оптимизация целесообразной.
EducatedFool вне форума Ответить с цитированием
Старый 04.07.2011, 00:49   #15
LBlonde
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 15
По умолчанию

EducatedFool, еще раз спасибо за ответ.
Я тоже читала в справочной системе, что использование глобальных переменных - не очень хороший стиль. Но пока я не придумала лучшего выхода. Пусть пока так остается, сначала доделаю программу, а потом уже буду думать, что оптимизировать.
LBlonde вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по формам Igori_18 Microsoft Office Access 2 28.10.2013 08:47
Вопрос по формам Tirpitz HTML и CSS 1 25.11.2010 22:47
Вопрос по формам Armatus Общие вопросы C/C++ 11 18.05.2009 17:44
Вопрос по формам max38934 Общие вопросы Delphi 4 18.05.2009 13:41
Вопрос по формам UserOK Общие вопросы Delphi 6 13.05.2008 21:25