Я разработал небольшой макрос VBA в Excel, который должен добавить значения ячеек в строке 15 к значениям ячеек в строке 6 во время смены рабочей книги (в моем случае введите число в строке 15 и нажатие на вкладку).Excel 2016 разбивает ранее работающий макрос VBA
Первоначально я разработал и использовал его в Excel 2013, после чего перешел на Mac и с тех пор использовал его в Excel для Mac 2011. Теперь я установил Excel для Mac 2016, и внезапно макрос не работает Больше не работай.
Это сценарий:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C15:H15")) > 0 Then
Call copySub
End If
End Sub
Sub copySub()
Sheets("sheet1").Protect , UserInterFaceOnly:=True
For i = 3 To 8
Cells(6, i).Value = Cells(6, i).Value + Cells(15, i).Value
Cells(15, i).Value = 0
Next i
End Sub
Когда я введите значение и нажмите вкладку в Excel 2016, я получаю ошибку во время выполнения 91 «Переменная объекта или переменная блока не установлен». Ошибка, кажется, происходит в строке:
Cells(6, i).Value = Cells(6, i).Value + Cells(15, i).Value
Я также пытался сохранить сумму в переменной перед назначением его Cells(6, i).Value
, но это не помогло.
Microsoft изменила логику защиты листа, особенно с параметром UserInterFaceOnly
, установленным на true
? Или что здесь происходит?
Надеюсь, вы можете мне помочь.
Спасибо, chuky
добавить ссылку на лист, например. 'Таблицы (« Sheet1 »). Cells (6, i) .value = ...' – SeanC
Спасибо за идею SeanC, но она все еще не работает ... – chuky
Ваш макрос не работает в Excel 2007, но ошибка включена 'If Intersect ...' line. Кроме того, даже с исправленным, он заканчивается бесконечным циклом, так как каждое изменение, которое вы делаете в 'copySub', снова вызовет макрос события. Вы уверены, что объясняете вещи такими, какие они есть? Является ли макросом события в модуле кода Sheet1, или он находится на другом листе? –