Я все еще довольно новичок в VBA и борюсь с его ограничениями (и моими!).Вот мой код:
Sub updateCache(CacheKey As String, CacheValue As Variant)
Dim DataCacheWorksheet As Worksheet, CacheRange As Range, Found As Variant, RowNum As Integer
Set DataCacheWorksheet = ThisWorkbook.Worksheets("DataCache")
Set CacheRange = DataCacheWorksheet.Range("A1:B999")
Set Found = CacheRange.Find(What:=CacheKey)
If Found Is Nothing Then
RowNum = CacheRange.Cells(Rows.Count, 2).End(xlUp).Row
DataCache.Add CacheKey, CacheValue
On Error Resume Next
DataCacheWorksheet.Cells(1, 1).Value = CacheKey
DataCacheWorksheet.Cells(1, 2).Value = CacheValue
Else
'Do other things
End If
End Sub
Когда я выполняю код, Excel просто выходит из подпрограммы в строке DataCacheWorksheet.Cells(1, 1).Value = CacheKey
без ошибок.Итак, два вопроса:
- Что за ошибка препятствует обновлению значения?
- Почему Excel игнорирует мою команду
On Error
?
Редактировать: Если я запускаю строку в поле «Немедленное» в среде IDE, я получаю сообщение об ошибке «Ошибка времени выполнения» 1004 «Ошибка приложения или объекта. Я получаю одну и ту же ошибку независимо отзначение CacheKey
(я пробовал Empty, 1234 и «Hello»).
Edit 2: Если я изменю подпрограмму так, чтобы CacheKey
и CacheValue
были жестко закодированы, ассылка на DataCache
удалена, , а затем я запускаю автономный , который работает. Так почему же он не работает при вызове из другой функции? Возможно ли, что Excel блокирует ячейки при выполнении вычислений?