Не нужно извиняться, это происходит постоянно! :)
Option Explicit
не указано, а OutputSheet
не определено.
Это делает OutputSheet
необъявленной переменной Variant/Empty
, от которой вы не можете легально сделать вызов члена, так как это не объект - следовательно, "объект требуется".
Если в верхней части модуля указано Option Explicit
, код не будет компилироваться: VBE будет предупреждать вас о необъявлении OutputSheet
.
Для того чтобы OutputSheet
существовал, вам нужно найти этот лист в Project Explorer (Ctrl + R), а затем изменить его свойство (Name)
(F4) на OutputSheet
.

Или, вы можете объявить переменную OutputSheet As Worksheet
и Set
ее для действительной Worksheet
ссылки на объект - например:
Dim OutputSheet As Worksheet
Set OutputSheet = ActiveWorkbook.Worksheets("OutputSheet")
Предполагается, что лист существует в ActiveWorkbook
с "именем вкладки" OutputSheet
; обратите внимание, что пользователь может легко изменить это; * * * * * * * * * * * * * * * * * * * * * * * Свойство (Name)
гораздо сложнее изменить для пользователя, но для этого требуется, чтобы лист существовал в ThisWorkbook
во время компиляции.
Обратите внимание, что неквалифицированные вызовы Cells
в нижней части процедуры неявно ссылаются на любой рабочий лист, который в настоящее время называется ActiveSheet
- рассмотрите возможность их квалификации с правильной Worksheet
ссылкой на объект. Если вы хотите написать OutputSheet
, это означает:
OutputSheet.Cells(C, rowLocation) = CaseStatusBox.Text
OutputSheet.Cells(D, rowLocation) = StaffEntryBox.Text
OutputSheet.Cells(G, rowLocation) = Date