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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2012, 20:28   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Проверка на ошибки и несоответствия

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

Код:
Sub ПроверкаСчета()
Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet, sh4 As Worksheet
Dim iLastRow2 As Long
    Set sh1 = Sheets("Шаблон счета")
    Set sh2 = Sheets("База заказов")
    Set sh3 = Sheets("База данных компаний")
    Set sh4 = Sheets("Электронный счет")
iLastRow2 = sh2.Cells(Rows.Count, 2).End(xlUp).row

If sh1.Cells("B1") <> sh2.Cells(iLastRow2, 3) Then MsgBox "Не соответствует сайт продавца. Ошибка на листе База заказов в столбце С", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("I9") <> sh2.Cells(iLastRow2, 1) Then MsgBox "Не соответствует номер счета", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("G31") <> sh2.Cells(iLastRow2, 2) Then MsgBox "Не соответствует количество товара", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("B3") <> sh3.Cells(3, 9) Then MsgBox "Не соответствует наименование банка", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("B6") <> sh3.Cells(3, 2) Then MsgBox "Не соответствует наименование компании-продавца", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("P3") <> sh3.Cells(3, 11) Then MsgBox "Не соответствует БИК компании-продавца", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("P4") <> sh3.Cells(3, 10) Then MsgBox "Не соответствует корр.счет компании-продавца", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("P5") <> sh3.Cells(3, 8) Then MsgBox "Не соответствует расч.счет компании-продавца", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("G16") <> sh4.Cells(11, 26) Then MsgBox "Не соответствует наименование покупателя", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("G18") <> sh4.Cells(11, 26) Then MsgBox "Не соответствует наименование покупателя", vbCritical, "Ошибка": Exit Sub
'проверка наименований товара
If sh1.Cells("C22") <> sh4.Cells(2, 6) Then MsgBox "Не соответствует наименование первого товара", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("C23") <> sh4.Cells(3, 6) Then MsgBox "Не соответствует наименование второго товара", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("C24") <> sh4.Cells(4, 6) Then MsgBox "Не соответствует наименование третьего товара", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("C25") <> sh4.Cells(5, 6) Then MsgBox "Не соответствует наименование четвертого товара", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("C26") <> sh4.Cells(6, 6) Then MsgBox "Не соответствует наименование пятого товара", vbCritical, "Ошибка": Exit Sub
If sh1.Cells("C27") <> sh4.Cells(7, 6) Then MsgBox "Не соответствует наименование шестого товара", vbCritical, "Ошибка": Exit Sub
'проверка цены товара
If sh1.Cells("V30") <> sh4.Cells(11, 11) Then MsgBox "Не соответствует сумма счета", vbCritical, "Ошибка": Exit Sub

End Sub
выдает ошибку 5 Invalid procedure call or argument. Танцы с бубном типа замены Cells на Range + Value или Text успеха не принесли.
Где я тут накосячил?
strannick вне форума Ответить с цитированием
Старый 14.09.2012, 08:12   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
sh1.Cells("B1")
поменяйте на
Код:
sh1.Range("B1")
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 14.09.2012, 08:45   #3
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Хоть и писал, что замена Cells на Range ничего не дает, сделал еще раз и получил ошибку 1004 в первой If. Шаманим дальше. Проверяемая ячейка B1 - формула, в которой в настоящий момент #Н/Д (сделано специально). У кого какие еще мысли?
strannick вне форума Ответить с цитированием
Старый 14.09.2012, 09:16   #4
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Цитата:
Хоть и писал, что замена Cells на Range ничего не дает
А я не перестаю удивляться: У меня всегда Cells("B1") вызывает ошибку, а Range("B1") работает. Ещё может вызывать ошибку сравнение ячеек, а не значений. Попробуй сравнивать значения:
Код:
sh1.Range("B1").Value
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 14.09.2012, 09:55   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
А я не перестаю удивляться: У меня всегда Cells("B1") вызывает ошибку, а Range("B1") работает.
У меня тоже после замены ошибки исчезли.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 14.09.2012, 11:49   #6
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

В общем пролез смешаный вариант:

Код:
If sh1.Range("B1").Text <> sh2.Cells(iLastRow2, 3).Text Then MsgBox "Не соответствует сайт продавца. Ошибка на листе База заказов в столбце С", vbCritical, "Ошибка": Exit Sub
Сам удивляюсь.
strannick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка несоответствия типов после подключения System и Classes Alex Cones Общие вопросы Delphi 9 26.11.2017 10:36
Макрос - проверка на ошибки MaxxVer Microsoft Office Excel 12 16.08.2012 14:30
С# Ошибки PROkaZZZniK Помощь студентам 1 19.11.2011 19:55
excel.Проверка VBA и проверка функции Будда Помощь студентам 0 14.04.2011 21:10