我正在尝试以编程方式将下拉框添加到Excel工作表中的单元格。举一个非常简单的例子,我只想让下拉框选择“是”或“否”。谷歌搜索之后,听起来我可以通过在单元格上插入数据验证来轻松地完成此任务。
我正在寻找一个如何做到这一点的例子。我发现的所有例子都已过时,过于复杂,或者在VB.Net中没有。当我说太复杂时,我的意思是这不是一个简单的“是”“否”的情况。他们在不同的工作表中使用实际列。
答案 0 :(得分:2)
我遇到了同样的问题,并尝试将其标记为解决方案。发布的代码实际上不起作用 - 尝试添加验证时会引发异常。
经过一些实验,我发现如果先选择范围,然后将验证添加到选择中,它将正常工作。
Dim xlRng As Excel.Range = xlWorksheet.Cells(1, 1)
xlRng.select ' this line added
With xlApp.selection.Validation ' change range to selection
.Add(Type:=Excel.XlDVType.xlValidateList, _
AlertStyle:=Excel.XlDVAlertStyle.xlValidAlertStop, _
Operator:=Excel.XlFormatConditionOperator.xlBetween, _
Formula1:="Yes,No")
.IgnoreBlank = True
.InCellDropdown = True
End With
答案 1 :(得分:1)
如果您只想要一个简单的in-cell yes / no下拉列表,您只需要声明一个范围并为其添加验证规则。微软有关于here的一些文档,但与大多数互操作文档一样,它有点稀疏...所以这里有一个片段显示如何添加验证列表:
'Imports Microsoft.Office.Interop.Excel
Dim xlApp As New Excel.Application
xlApp.Visible = True
Dim xlWorkbooks As Excel.Workbooks = xlApp.Workbooks
Dim xlWorkbook As Excel.Workbook = xlWorkbooks.Add
Dim xlWorksheet As Excel.Worksheet = CType(xlWorkbook.Worksheets(1), Excel.Worksheet)
Dim xlRng As Excel.Range = xlWorksheet.Cells(1, 1)
With xlRng.Validation
.Add(Type:=Excel.XlDVType.xlValidateList, _
AlertStyle:=Excel.XlDVAlertStyle.xlValidAlertStop, _
Operator:=Excel.XlFormatConditionOperator.xlBetween, _
Formula1:="Yes,No")
.IgnoreBlank = True
.InCellDropdown = True
End With
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRng)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorksheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbooks)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)