Мой последний вопрос был отмечен как дубликат этого. Я полностью согласен с этим. Поэтому я пришел сюда, чтобы взглянуть на ответы и прочитать пост Эрика (очень интересно). Вы не можете обеспечить это во время компиляции с помощью системы типов, но вы можете сделать это во время выполнения. Способ, которым я это реализовал, это:
abstract class FooBase
{
protected FooBase()
{
if (typeof(T) != GetType())
{
throw new InvalidOperationException();
}
}
}
Посредством этого мы можем посадить семя злой собаки, но эта собака будет прервана во время выполнения.
Защитите свой рабочий лист, используя параметр UserInterFaceOnly:=True
, чтобы защита влияла только на пользовательский интерфейс, но не на любой код VBA. Это означает, что VBA может редактировать защищенные таблицы, а пользователь - нет.
Затем вы можете запустить .Refresh
с VBA даже на защищенном листе .
.Protect Password:="passw", UserInterFaceOnly:=True
Может потребоваться защита рабочего листа при (повторном) открытии рабочей книги (например, событие Workbook_Open()
). См. VBA Excel: защита листа: UserInterFaceOnly ушел