В настоящее время я работаю над приложением Excel, в котором у меня есть макрос, управляемый нажатием кнопки, который сбрасывает числовые значения в определенных ячейках таблицы.
В этой таблице 3 столбца; «Количество установлено (n)», «Требуемое количество (м)» и «Конфигурация замка».
Что мне нужно сделать, так это то, что при нажатии кнопки числовые значения для каждой строки в пределах «Количество Подходящий столбец (n) "сбрасывается в соответствии со значениями, отображаемыми в столбце« Необходимое количество (м) »той же строки.
Однако, если значение ячейки в столбце «Конфигурация блокировки» этой строки установлено как «заблокировано», я хочу, чтобы значение «Количество соответствовало (n)» оставалось неизменным после нажатия кнопки.
Надеюсь, это имеет смысл! Вот моя текущая попытка закодировать это:
Public Sub Reset_Quantity_Fitted()
'Macro to make quantity fitted equal to quantity required
Dim DatRange2 As String
quantity_required = Worksheets(ActiveSheet.Name).ListObjects("Table_" & ActiveSheet.Name).ListColumns("Quantity Required (m)").DataBodyRange
Set DatRange = Worksheets(ActiveSheet.Name).ListObjects("Table_" & ActiveSheet.Name).ListColumns("Quantity Fitted (n)").DataBodyRange
DatRange2 = Worksheets(ActiveSheet.Name).ListObjects("Table_" & ActiveSheet.Name).ListColumns("Lock Configuration").DataBodyRange
If DatRange2 = "Locked" Then
DatRange = DatRange
Else
DatRange = quantity_required
End If
End Sub
Я не думаю, что я слишком далеко, но при запуске этого кода я получаю следующую ошибку:
Выполнить ошибка «13»: несоответствие типов
Любая помощь очень ценится! Спасибо!
РЕДАКТИРОВАТЬ! Следуя совету BigBen ниже, я попытался следующий код, но все еще получаю ту же ошибку несоответствия. Кто-нибудь может помочь?
Public Sub Reset_Quantity_Fitted()
'Macro to make quantity fitted equal to quantity required
Dim rng As Range
Dim cell As Range
Set rng = Worksheets(ActiveSheet.Name).ListObjects("Table_" & ActiveSheet.Name).ListColumns("Quantity Fitted (n)").DataBodyRange
For Each cell In rng.Cells
If rng.Offset(, 5) = "Locked" Then
cell = Worksheets(ActiveSheet.Name).ListObjects("Table_" & ActiveSheet.Name).ListColumns("Quantity Fitted (n)").DataBodyRange
Else
cell = Worksheets(ActiveSheet.Name).ListObjects("Table_" & ActiveSheet.Name).ListColumns("Quantity Required (m)").DataBodyRange
End If
Next cell
End Sub