Hi All:
小弟现在在做一个Excel的导出,为了减少出错率,想把一列Column里的Cells动态绑定Data Validation, 现在问题在于Excel的动态绑定的
cellRange.Validation.Add(,这里的formatStr最多只能256 char,超出了以后导出Excel打开以后就说Validation丢失,我看了一下Excel里面可以将Validation bind to Cells, 所以就改动了这个
Excel.XlDVType.xlValidateList,
Excel.XlDVAlertStyle.xlValidAlertInformation,
Excel.XlFormatConditionOperator.xlBetween,
formatStr,
Type.Missing);
Excel.Range tempRange =(Excel.Range)wSheet.get_Range((Excel.Range)wSheet.Cells[1, columCount + 1], (Excel.Range)wSheet.Cells[list.Count, columCount + 1]);, 如果tempRange只有一个Cells的时候是可以的,当多个Cells的时候会出“System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x800A03EC”,当然,绑定一个Cells的时候我不是用wSheet.get_Range,用的直接是(Excel.Range)wSheet.Cells[row,Column],不知道有没有哪位大神能帮我,我已经卡在这卡了很久了...项目紧急,救人如救火
cellRange.Validation.Add(
Excel.XlDVType.xlValidateList,
Excel.XlDVAlertStyle.xlValidAlertInformation,
Excel.XlFormatConditionOperator.xlBetween,
tempRange ,
Type.Missing);
------解决方案--------------------
你可以参考宏定义中的代码,这个多个连续的cells的设置数据有效性的宏代码
Sub 宏3()
'
' 宏3 宏
'
'
Range("A3:C3").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="0", Formula2:="256"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
End Sub