我想在每次启动工作表时填充数据验证下拉列表。下拉列表中的数据可能会不时更改,因为下拉内容来自我从插件中使用的COM dll中提取的项目列表。我创建了这样的下拉列表:
void AddFieldValidationToCells<T>(Excel.Range range)
{
if (range == null)
return;
List<string> list = Enum.GetValues(typeof(T))
.Cast<T>()
.Select(v => v.ToString())
.ToList();
list.Sort();
foreach (Excel.Range cell in range)
{
cell.Validation.Delete();
cell.Validation.Add(
Excel.XlDVType.xlValidateList,
Excel.XlDVAlertStyle.xlValidAlertInformation,
Excel.XlFormatConditionOperator.xlBetween,
string.Join(",", list),
Type.Missing);
cell.Validation.IgnoreBlank = true;
cell.Validation.InCellDropdown = true;
}
}
这完美无缺。唯一的问题是如果工作表崩溃,当我重新打开它时,我得到以下错误,我认为这与验证列表中的数据不再有参考这一事实有关:
如果工作表正确关闭,我的代码删除了验证并且没有发生此错误,但如果工作表由于某种原因挂起或以其他方式崩溃,我是否有必要将此数据写入工作表以使其成为可能持久避免这条消息?