Я пытаюсь раскрасить ячейки кода, чтобы предупредить пользователя о том, какие данные ячейки неверны, прежде чем выполнять вычисления.В настоящее время выбрасывается:
ошибка времени выполнения. Объект 438 не поддерживает свойство
при попытке выполнить все данные.
Основное созданиерабочий лист, позволяющий пользователю вводить некоторые данные в состав, а затем на основе некоторых внутренних данных / ограничений выкладывать ответ о том, что он может / не может делать.У меня уже есть уровень проверки ошибок в исходном коде, когда пользователь вводит данные (в основном, чтобы попытаться убедить их убедиться, что вводимые данные действительны до того, как они попытаются выполнить вычисления), и это прекрасно работает, используяподпрограмма Worksheet_Change, которая может циклически проходить по всем ячейкам по одной (в пределах целевого диапазона), не стоит беспокоиться.
Если я попытаюсь повторить это (используя именованный диапазон вместо целевых ячеек из функции изменения), кажется,сделать одну из двух вещей: он попытается отправить через ряд ячеек, а не по отдельным ячейкам, и потерпит неудачу, когда попытается сопоставить данные из «ячеек», а не из одной ячейки, которую он должен пытаться сопоставить, ИЛИ это будетвыдает ошибку 438, когда пытается ее закрасить.
Private Sub CommandButton1_Click()
Dim ErrorWagonPack As Boolean, ErrorCellsNotEmpty As Boolean, WagonPack As Integer, cel As Range, Target As Range
ErrorWagonPack = False
ErrorCellsNotEmpty = False
Set Target = Application.Range("ConsistInput")
For Each cel In Target 'issue is here somewhere I think. It's related to how the cel is created and as such what properties it can have
Application.EnableEvents = False
WagonPack = 0
If Len(cel.Value) > 0 Then
WagonPack = Application.Index(Application.Range("WagonData"), Application.Match(cel.Value, Application.Range("WagonData").Columns(1), 0), 4)
If cel.Offset(0, 1).Value Mod WagonPack > 0 Then
ErrorWagonPack = True
cel.Font.ColourIndex = RGB(156, 0, 6) '438 error here
cel.Interior.ColourIndex = RGB(255, 199, 206) '438 error here too
End If
End If
Next cel
If ErrorWagonPack = True Or ErrorCellsNotEmpty = True Then
Exit Sub
End If
'calculate stuff
Application.EnableEvents = True
End Sub
В идеале я бы хотел добраться до точки, где я запускаю код, закрашиваю ячейки, вызывающие проблемы / с неверными данными, а затем, если неНе выбрасывайте переменные ошибки, запустите расчет, но ошибка 438, кажется, является камнем преткновения.Я почти готов поспорить, что это что-то простое, что я просто скучаю, но не могу понять это.Вероятно, это не поможет, я все еще довольно зелен с VBA.