使用vb.net将数据验证添加到Excel电子表格

时间:2014-02-07 20:42:42

标签: vb.net excel validation

我正在尝试使用VB.NET将数据验证添加到电子表格中,并使用Sheet2上的数据。我能够使用Sheet2和Sheet2上需要的数据打开工作簿,但我遇到的问题是填充Sheet1上的数据验证下拉列表。我正在尝试在A列和Sheet1的前700行中创建数据验证,而Sheet2上的数据将在A列中,前800行。

我尝试了以下内容并创建了数据验证,它只有一个值 - “Sheet2” - 因为我实际上并没有在这里放置公式。

With xlsSheet 'worksheet
    .Range(String.Concat("Sheet1!$A$2:$A$700")).Validation.Add(XlDVType.xlValidateList, & _
     Formula1:="Sheet2")
End With

当我尝试以下操作时,它会创建包含sheet2上的列和数据的Excel工作表,但它不会创建数据验证。

With xlsSheet 'worksheet
    .Range(String.Concat("Sheet1!$A$2:$A$700")).Validation.Add(XlDVType.xlValidateList, & _
     Formula1:="=Sheet2!$A$2:$A$800")
End With

我在网上寻找示例并找到了http://www.get-digital-help.com/2011/10/05/add-values-to-a-data-validation-list-vba/,但这对我来说也不起作用。

如何从A2中的A2:A800获取数据到A2中的sheet1上的数据验证:A700?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果有人想知道解决方案,我就是这样做的:

我首先创建了一个命名集,我将在datavalidation下拉列表中引用它。

workbooks.Names.Add(Name:="Working", RefersToR1C1:="=Work2!R2C1:R700" & "C1")
'Named set needed for data validation.

With xlsSheet
     .Range("Work1!$A$2:$A$700").Validation.Add(XlDVType.xlValidateList, Formula1:="=Working")
End With

在上面的代码中,您可以看到Work1是我想要插入数据验证下拉列表的工作表的名称。命名范围是从Work2获取数据 - 我的第二张工作表。