別のバリデーターを追加する前に、セルバリデーターを削除する必要があります。それ以外の場合は、検証例外が HRESULT からの例外としてスローされることがわかります: 0x800A03EC
ExcelApp.get_Range("A1").Cells.Validation.Delete();
ExcelApp.get_Range("A1").Cells.Validation.Add(Microsoft.Office.Interop.Excel.XlDVType.xlValidateList, Microsoft.Office.Interop.Excel.XlDVAlertStyle.xlValidAlertInformation, Microsoft.Office.Interop.Excel.XlFormatConditionOperator.xlBetween, delimitedString1To100, Type.Missing);
セルバリデーターが存在しない場合 (つまり、初めて)、削除しても問題は発生せず、そのままにしておいても安全です。
編集/解決策:
コードの問題は、変数に1 と100arr
の 2 つの項目が含まれていたことです。引数Formula1のXLDVTypeで機能させるには、すべての有効な値 1、2、3...100 を含める必要があります。xlBetween
Validation.Add
xlValidateList
var val = new Random();
var delimitedString1To100 = string.Join(",", (int[])Enumerable.Range(1, 100).ToArray());
for (int i = 1; i < 11; i++)
{
using (var rnCells = xlApp.Range["A" + i.ToString()].WithComCleanup())
{
rnCells.Resource.Value2 = val.Next(100);
rnCells.Resource.Cells.Validation.Delete();
rnCells.Resource.Cells.Validation.Add(
Microsoft.Office.Interop.Excel.XlDVType.xlValidateList,
Microsoft.Office.Interop.Excel.XlDVAlertStyle.xlValidAlertInformation,
Microsoft.Office.Interop.Excel.XlFormatConditionOperator.xlBetween, delimitedString1To100, Type.Missing);
}
}