Worksheet.Cells
возвращает объект Range
и не принимает никаких параметров;передаваемый аргумент ("statusRng")
в итоге будет передан свойству Range.[_Default]
, которое принимает 2 необязательных аргумента.При заданных аргументах Range.[_Default]
передает их Range.Item(RowIndex, ColumnIndex)
, что принимает целочисленные значения / Long
, а не строки.
Как @ Коминтерн предложил , передав аргументы Worksheet.Range
, будет работать как положено - Worksheet.Range
принимает [cell1], [cell2]
аргументы Variant
и предоставляет несколько удобных способов извлечь Range
из Worksheet
объекта - один из которых заключается в предоставлении имени для именованногоrange.
Следовательно, они должны работать нормально, при условии, что указанные имена существуют:
OutputSheet.Range("statusRng").Value = CaseStatusBox.Text
OutputSheet.Range("StaffRng").Value = StaffEntryBox.Text
OutputSheet.Range("DateRng").Value = Date
Если имена не существуют, ожидать ошибку времени выполнения 1004.
Похоже, вы хотите передать строковые переменные, содержащие адреса рабочих листов, а не именованные диапазоны.В этом случае отбросьте двойные кавычки "
, поскольку эти строковые литералы-разделители в VBA;строка "statusRng"
передается, а ваша переменная statusRng
не читается.
Dim statusRng As String
statusRng = "C" & rowLocation
Dim StaffRng As String
StaffRng = "D" & rowLocation
Dim DateRng As String
DateRng = "G" & rowLocation
OutputSheet.Range(statusRng).Value = CaseStatusBox.Text
OutputSheet.Range(StaffRng).Value = StaffEntryBox.Text
OutputSheet.Range(DateRng).Value = Date