Я испытываю командную кнопку для запуска трех проверок на внутреннем листе заявки («TestOrder») в Excel 2007. Если основная предпосылка заключается в том, что из списка запасных частей (товаров) пользователь может ввести количествоТребуется пункт / с и укажите код клиента, для которого предназначен товар.Если какое-либо из обязательных полей не заполнено, появится сообщение, и процедура остановится.
Они должны ввести свои инициалы в качестве реквизитора из раскрывающегося списка в одной выделенной ячейке (D2) и выбрать инициалыпользователь, который обработает запрос из другого выпадающего списка в выделенной ячейке (F2).Количества будут введены в соответствующую строку столбца L, а код клиента - в той же строке столбца M. Затем этот лист будет отфильтрован и отправлен по электронной почте для обработки.
У меня в основном есть всеэто работало, но из-за нехватки времени я не смог найти способ проверить, что все необходимые данные были введены до того, как отфильтрованный заказ был отправлен куда-либо по электронной почте.
Мне нужно проверить три вещи:
- Шаг 1. Были ли введены оба набора инициалов
- Шаг 2. Если введены количества, поле клиента не может быть пустым
- Шаг 3,Если клиент был введен, то поле количества не может быть пустым.
Итак, все три шага должны иметь данные в своих ячейках.
У меня есть Шаг 1, работающий каквыделенные ячейки D2 и F2 не изменяются, если какая-либо ячейка пуста, пользователю появляется сообщение и останавливается процедура.
В то время как количества, требуемые в столбце L, икоды клиентов в столбце M являются переменными и будут подвергаться фильтру для удаления пробелов и показывать только то, что было заказано.
Итак, я изначально работал над тестом для одного столбца (коды M-клиентов), чтобы проверить, меньше ли число непустых ячеек в диапазоне, чем общее количество ячеек в диапазоне, и это гдеПроизошла ошибка времени выполнения 424.В строке
Set myCellRange = Range("M7:M" & Range("M" & Rows.Count).End(xlUp).Row).Select
, где M7 - верхняя ячейка перечисленных данных в этом столбце.
Код моей работы в процессе выполнения:
Sub btn_test_checkdata()
' On the click of this button run a check to see if two cells have the required data, in this case they would be Users Initials selected from a drop down list cell'
If [D2].Value = "" Then
MsgBox "There MUST be Initials selected in the Who is ordering Field", vbOKOnly, "Entry Reqd"
[D2].Select
Cancel = True
Exit Sub
End If
If [F2].Value = "" Then
MsgBox "There MUST be Initials selected in the Who is the Req'n being sent to Field", vbOKOnly, "Entry Reqd"
[F2].Select
Cancel = True
Exit Sub
End If
'Sub checkIfAnyCellInRangeIsEmpty()
'declare object variable to hold reference to cell range you work with
Dim myCellRange As Range
'identify cell range you work with
Set myCellRange = Range("M7:M" & Range("M" & Rows.Count).End(xlUp).Row).Select
'check if number of non-empty cells in range is less than total number of cells in range. Depending on result, display message box indicating whether cell range contains any empty cell (True) or not (False)
If WorksheetFunction.CountA(myCellRange) < myCellRange.Count Then
MsgBox myCellRange.Address & " contains at least 1 empty cell"
End If
End Sub
Очевидно, мне нужно распространить эту проверку на оба столбца, чтобы любые намеки на это были бы полезны, поскольку я не являюсь опытным пользователем, и я думаю, что я заставлю код работать для одного столбца, а затем повторите его дляпрочее.
Текущая ошибка, которую я получаю сейчас, связана ли она с указанием рабочего листа?Поскольку я не могу видеть, как я это делаю, где угодно.
Как я уже сказал, у меня есть основные операции, работающие в листе заказов, и речь идет о том, чтобы я создал небольшую процедуру для окончательной проверки, прежде чем что-либо еще произойдет.1037 *