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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2009, 14:00   #1
ХочуЗнать
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 71
По умолчанию Как наладить работу макросов?

Доброго всем дня!
Как физлицу, мне очень часто приходится осуществлять платежи через Сбербанк. И заполнение шариковой ручкой в полутемных помещениях сберкас специальной квитанции, стало для меня, плохо видящего аудитора, трудноватой и надоедливой процедурой.
Чтобы помочь своему горю, решил соорудить вот такую миии програмку. Трудился в поте лица. Кое что нашел в интернете, что то сочинил сам и вроди бы что то стяпал. Но как можно видеть из примера, работает мое «чудище» не очень корректно. Поэтому , господа форумчане! Мне и понадобилась помощь профессионала.
У файле, что прилагается, необходимо дописать и отладить 2 макроса. У самого для этого маловато знаний програмного дела.
1) В первом макросе «ПроверкаСчета», необходимо добавить проверку на правильность заполнения номера расчетного счета, который может иметь в своем составе не более 14 (но, может быть меньше 14-ти ), цифр. Соответственно МФО – 6 цифр (не больше и не меньше), код ЕДРПОУ – 8 цифр (тоже не больше и не меньше). К стати. С учетом моей забывчивости и плохого зрения - эта проверка обязательна. А если бы еще добавить проверку на заполнение оставшихся реквизитов – было бы здорово. Но это уже с моей стороны, черезчур много требований.
2) Второй макрос: «Click()». Здесь у меня не получается правильно вносить в столбец «К» «Reestr-а» значение ПДВ (на русском НДС), который может принимать три варианта своего отражения . Первый вариант – сумма ПДВ цифрами (например – 10,00); второй вариант – вставляются два слова: «без ПДВ»; и третий вариант – нету никакой записи.
Одновременно в ячейке Т3 «Kvut- анции», также по желанию пользователя, ПДВ может отражаться следующим образом :
а) Сумма к оплате прописью в том числе ПДВ (сумма ПДВ цифрами и без скобок). Например: Шістдесят гривень 60 копійок в т.ч. ПДВ – 10,1 грн.
б) Сумма прописью без ПДВ. Например: Шістдесят гривень 60 копійок без ПДВ;
с) И третий вариант. В ячейку просто вставляется: Шістдесят гривень 60 копійок . Без всякого напоминания о НДС;
д) И желательно, чтобы в «TextBoxStavkaPDV» самой формы, ставка ПДВ не стиралась при внесении новых реквизитоп и при перезагрузке самой программы. А внсилась самим пользователем один раз и на долгое время. Скажем так, до следующего измения законодателем ее размера.
Кроме того, как видно из примера, после столбца «К» в «Reestr-е», повторно вносится название получателя. А этого вообще не должно быть. Чего в даном макросе не хватает, чтобы устранить этот недостаток?
И, наконец последнее, новая строка в «Reestr» добавляется каким то не понятным образом. А хотелось бы, чтобы она вставлалась вверху списка.
Вот это и все мои муки. Может быть я хочу от вас очень много? Прстите меня «грешного»!!! И , если это не очень тяжело, помогите мне справиться с этой бедой.
Заранее, вам большое СПАСИБО!
Вложения
Тип файла: rar Квит ОБУ_v1.rar (42.7 Кб, 23 просмотров)
ХочуЗнать вне форума Ответить с цитированием
Старый 20.10.2009, 16:05   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
1) В первом макросе «ПроверкаСчета», необходимо добавить проверку на правильность заполнения номера расчетного счета, который может иметь в своем составе не более 14 (но, может быть меньше 14-ти ), цифр. Соответственно МФО – 6 цифр (не больше и не меньше), код ЕДРПОУ – 8 цифр (тоже не больше и не меньше).
Я бы не стал вносить изменения в макрос ПроверкаСчета, а просто делал бы кнопку CommandButtonOk недоступной до тех пор, пока не будут КОРРЕКТНО введены ВСЕ данные:



Код совсем несложный:

Код:
Private Sub TextBoxEDRPOY_Change()
    CheckResult = Me.TextBoxEDRPOY Like String(8, "#")
    Me.TextBoxEDRPOY.BackColor = IIf(CheckResult, vbWhite, 8421631)
    If Me.TextBoxEDRPOY Like String(8, "#") Then If Not Inn8(Me.TextBoxEDRPOY) _
       Then Me.TextBoxEDRPOY.BackColor = vbYellow
    CheckAllFields
End Sub

Private Sub TextBoxMFO_Change()
    CheckResult = Me.TextBoxMFO Like String(6, "#")
    Me.TextBoxMFO.BackColor = IIf(CheckResult, vbWhite, 8421631)
    CheckAllFields
End Sub

Private Sub TextBoxRax_Change()
    CheckResult = Me.TextBoxRax Like String(Len(Me.TextBoxRax), "#") And Len(Me.TextBoxRax) < 15
    Me.TextBoxRax.BackColor = IIf(CheckResult, vbWhite, 8421631)
    CheckAllFields
End Sub

Sub CheckAllFields()
    Dim res As Boolean
    res = Me.TextBoxRax.BackColor = vbWhite And _
          Me.TextBoxMFO.BackColor = vbWhite And _
          Me.TextBoxEDRPOY.BackColor = vbWhite
    Me.CommandButtonOk.Enabled = res
End Sub
Каждое из этих трёх полей становится красным, если введено некорректное значение (что-то кроме цифр, или длина не соответствует)
Поле TextBoxEDRPOY окрашивается в желтый цвет, если длина соответствует, но ИНН не проходит проверку.

Пример:


Последний раз редактировалось EducatedFool; 20.10.2009 в 16:09.
EducatedFool вне форума Ответить с цитированием
Старый 21.10.2009, 00:30   #3
ХочуЗнать
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 71
По умолчанию

EducatedFool!
Извините что долго не отвечал, Но только сейчас добрался до ПК.Ваш вариант очень интересен. Спасибо, сейчас попробую его вставить в свой пример
ХочуЗнать вне форума Ответить с цитированием
Старый 21.10.2009, 12:44   #4
ХочуЗнать
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 71
По умолчанию

Доброго вам дня!
Не могу понять, че сделал не так как надо? Не работает
Вложения
Тип файла: rar Квит ОБУ_v2.rar (36.4 Кб, 13 просмотров)
ХочуЗнать вне форума Ответить с цитированием
Старый 21.10.2009, 13:12   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Не могу понять, че сделал не так как надо?
Этот код надо было вставлять в модуль формы, а не в стандартный модуль.
Я начинаю сомневаться, что эту программу делали Вы...

И неужели сложно было скачать выложенный мной пример?
EducatedFool вне форума Ответить с цитированием
Старый 21.10.2009, 16:30   #6
ХочуЗнать
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 71
По умолчанию

Извините меня, но просто не сообразил что через картинку можно вызвать файл. Теперь уже усек.Буду изучать.
А что касается "делали не вы", так я же писал, что часть макросов и формул нашел в интернэте, часть сочинил сам, по образцу. а вот форму от начала и до конца сделал сам.Не скрою, что некоторые вещи делал методом тыка и потратил на это очень много времени. Но зато уже многому научился.
Еще раз спасибо вам за помощь!
ХочуЗнать вне форума Ответить с цитированием
Старый 22.10.2009, 13:13   #7
ХочуЗнать
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 71
По умолчанию

Всем привет!
Уважаемый EducatedFool!, еще раз примите мою благодарность за оказаную помощь. Написаное вами - работает отлично.
Но остался нерешенным вопрос внесения информации из формы в Reestr.В этом плане, я не могу реализовать порядок отображения в форме НДС. А именно в комбоксе "ПДВ", нужно предусмотреть три строки: первая строка – отображение суммы ПДВ (на русскомм - НДС) цифрами (например – 10,00); вторая – два слова: «без ПДВ»; и третья – пустая. И, как это предусмотрено на форме, ставка для расчета суммы НДС (в первой строке) должна находится в текстовом поле "Ставка ПДВ". Причем,нужно предусмотреть, чтобы запись в этом текстовом поле не удалялась при внесении новых даных в другие поля и при перезагрузке самой проги. А менялася самим пользователем, при изменении ее размера.
Вот такая предпоследняя, из ранее заявленых, проблемка, которую самостоятельно я решить не могу, как и не смог найти наглядного примерчика, чтобы сделать по аналогии. Поэтому и обращаюсь к вам за помощью.
ХочуЗнать вне форума Ответить с цитированием
Старый 26.10.2009, 14:34   #8
ХочуЗнать
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 71
По умолчанию

Доброго вам дня!
Уважаемый EducatedFool! Все еще хочу дописать эту прогу чтобы ей можно было пользоваться.Нехватка спецзнаний,сказывается очень сильно. А приск правильного решения занимает у меня много времени и не всегда дает желаемый результат. Например, проблему с НДС за 3 дня упорной работы я так и не решил. Посколько почти совсем не знаю макросов, а на догадках и методом тыка такую слодную залачу решить пока не получается.Как и не получается наладить макрос, который заносит новую запись в реестр.
Плюс к тому, в прцесе работы проявилась проблема с ручным набором новых даных. А точнее, при вводе кода ЕДРПОУ с клавиатуры почему то не активируется кнопка Внесіть до реєстру. Интуитивно догадываюсь, что проблема кроется вот здесь :"Поле TextBoxEDRPOY окрашивается в желтый цвет, если длина соответствует, но ИНН не проходит проверку",- но как ее решить также не знаю. Помогите пожалуйста!
С уважением к вам, начинающий чайник Хочу знать!

Последний раз редактировалось ХочуЗнать; 26.10.2009 в 14:36.
ХочуЗнать вне форума Ответить с цитированием
Старый 26.10.2009, 14:52   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Плюс к тому, в прцесе работы проявилась проблема с ручным набором новых даных. А точнее, при вводе кода ЕДРПОУ с клавиатуры почему то не активируется кнопка Внесіть до реєстру. Интуитивно догадываюсь, что проблема кроется вот здесь :"Поле TextBoxEDRPOY окрашивается в желтый цвет, если длина соответствует, но ИНН не проходит проверку",- но как ее решить также не знаю.
Я вижу только 2 решения:

1) вводить корректные значения ЕДРПОУ
Например, при вводе числа 65465464 кнопка становится доступной, а поле - белым.
При вводе же чисел 65465463 или 65465465 кнопка будет недоступна, поскольку Ваша функция Function Inn8(sInn As String) As Boolean считает, что код содержит ошибку.

2) убрать эту проверку из кода.
Вместо
Код:
Private Sub TextBoxEDRPOY_Change()
    CheckResult = Me.TextBoxEDRPOY Like String(8, "#")
    Me.TextBoxEDRPOY.BackColor = IIf(CheckResult, vbWhite, 8421631)
    If Me.TextBoxEDRPOY Like String(8, "#") Then If Not Inn8(Me.TextBoxEDRPOY) _
       Then Me.TextBoxEDRPOY.BackColor = vbYellow
    CheckAllFields
End Sub
оставьте
Код:
Private Sub TextBoxEDRPOY_Change()
    CheckResult = Me.TextBoxEDRPOY Like String(8, "#")
    Me.TextBoxEDRPOY.BackColor = IIf(CheckResult, vbWhite, 8421631)
    CheckAllFields
End Sub

Цитата:
Например, проблему с НДС за 3 дня упорной работы я так и не решил.
Как и не получается наладить макрос, который заносит новую запись в реестр.
Я бы помог, но не разобрался в задании:
Цитата:
Но остался нерешенным вопрос внесения информации из формы в Reestr.В этом плане, я не могу реализовать порядок отображения в форме НДС. А именно в комбоксе "ПДВ", нужно предусмотреть три строки: первая строка – отображение суммы ПДВ (на русскомм - НДС) цифрами (например – 10,00); вторая – два слова: «без ПДВ»; и третья – пустая. И, как это предусмотрено на форме, ставка для расчета суммы НДС (в первой строке) должна находится в текстовом поле "Ставка ПДВ".
Что должно происходить при выборе из выпадающего списка каждого из значений?

А эта фраза вообще непонятна:
Цитата:
Причем,нужно предусмотреть, чтобы запись в этом текстовом поле не удалялась при внесении новых даных в другие поля и при перезагрузке самой проги. А менялася самим пользователем, при изменении ее размера.

Последний раз редактировалось EducatedFool; 26.10.2009 в 14:55.
EducatedFool вне форума Ответить с цитированием
Старый 26.10.2009, 17:06   #10
ХочуЗнать
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 71
По умолчанию

Ну вот, заменил код, так как вы и написали. Теперь, при вводе 65465463 или 65465464 кнопка стала активной и новая строка вносится в реестр, но когда ввожу цифры, например 65465465, кнопка активна но при нажатии на нее, программа выдает сообщение: «Неправильно набрано код ЕДРПОУ» и глохнет.
Попробовал удалить старую проверку (модули:CheckAccount и CheckINN) выдает следующую ошибку. Слова ПроверкаСчета в строке sErrAcc = ПроверкаСчета(TextBoxRax.Text, TextBoxMFO.Text)
, в приведенном ниже макросе, красит синим цветом и тоже глохнет на названой выше строке макроса.
Private Sub CommandButtonOk_Click()
Dim LastRow As String
Dim sErrAcc As String
Dim sErrCorAcc As String
Dim bINN As Boolean
Dim Response As Variant
sErrAcc = ПроверкаСчета(TextBoxRax.Text, TextBoxMFO.Text)
bINN = Inn8(TextBoxEDRPOY.Text).
Довожу до вашего ведома о том, что набор цифр в коде ЕДРПОУ, может быть каким угодно, но не больше и не меньше 8 цифр.
Далее: «Что должно происходить при выборе из выпадающего списка каждого из значений?».
1) При выборе первой строки. Ексель должен вычислить сумму ПДВ, по формуле ПДВ=сумма платежа : 120 х20 (ставка ПДВ) и округлить полученный результат до копеек. Например 60,30 : 120 х 20 = 10,05 (грн.). А затем полученую сумму «10,05» вносит в ячейку, которая находится на пересечении строки, расположеной после шапки таблицы и столбца «К» Reestrа. Естественно, что без кавычек. При этом следующие после этого столбца ячейки, должны быть пустыми. А у меня, как вы видите, в следующий столбец вносится наименование получателя платежа.
2) При выборе строки со словами «без ПДВ» , в эту же ячейку вставляются слова - без ПДВ. При этом, слово «без», должно начинаться с маленькой буквы.
3) При выборе строки «пусто», в даную ячейку ничего не вносится.
Что касается второй вашей цитаты, то здесь имеется в виду то, чтобы пользователю не приходилось каждый раз вносить в текстовое поле «Ставка ПДВ» одну и ту же процентную ставку заново, а только тогда, когда эта ставка меняется самим законодателе

Последний раз редактировалось ХочуЗнать; 26.10.2009 в 17:19.
ХочуЗнать вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как автоматизировать работу Intery Microsoft Office Word 13 31.07.2009 18:24
Автоматический запуск макросов с листа на котором указан перечень макросов с параметрами и без Neoli Microsoft Office Excel 2 09.03.2009 14:31
Не удается наладить соединение ( MFC , CSocket ) DPRO Visual C++ 4 30.08.2008 09:29
Как использовать возможности Макросов MASM'а Stilet Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 27.05.2008 15:47
Как ускорить выполнение макросов tat-besidovska Microsoft Office Excel 1 22.01.2008 12:12