【问题标题】:excel validation rule using vb.net using spreadsheetgear使用电子表格使用 vb.net 的 excel 验证规则
【发布时间】:2015-09-07 09:37:43
【问题描述】:

我想使用 VB.Net 动态地将验证规则添加到 excel 中,我可以使用电子表格向单元格添加日期验证,如下所示

worksheet.Range(DateRange).Validation.Add(ValidationType.Date, ValidationAlertStyle.Stop, ValidationOperator.Greater, dt, Nothing)
worksheet.Range(DateRange).NumberFormat = "mm/dd/yyyy"

以同样的方式,如何为单元格制定验证规则以仅接受单个字符“x”和“X”。提前谢谢。

【问题讨论】:

  • 也许您可以使用List 验证?我对在 Visual Basic 中使用 Excel 一无所知,但“Value must be present in a specified list”对我来说听起来不错。 msdn.microsoft.com/en-us/library/office/ff840715.aspx
  • 抱歉,这实际上与用于使用 vb.net 自动化 excel 的电子表格 dll 有关
  • 这仍然包括 List 验证 AFAIK。

标签: vb.net excel validation spreadsheetgear


【解决方案1】:

使用 ValidationType.List 将输入限制为“x,X”

您可以使用ValidationType.List 枚举选项来完成此操作。示例:

worksheet.Range(SomeRange).Validation.Add(ValidationType.List, ValidationAlertStyle.Stop, ValidationOperator.Default, "x,X", Nothing)

不使用 ValidationType.List 将输入限制为“x,X”

当单元格被选中时,ValidationType.List 枚举选项将始终显示一个下拉列表。如果您不希望出现此下拉菜单,则需要采用另一种方法,提供自定义公式来进行验证 (ValidationType.Custom),这可能需要一些努力才能正常工作,因为您是负责验证SomeRange中每个单元格的输入。

以下是解决此问题的一般方法(请注意,我使用的实际公式只是完成任务的一种方法......任何数量的其他公式都可以用来做同样的事情):

' Get IRange representing your SomeRange string (say, "A1:B5").  
Dim MyRange As IRange = worksheet.Range(SomeRange)

' Get (relative-referenced) address of top-left cell for SomeRange (A1 in this case).  
' We need to use this cell address in the formula to validate input.  This approach
' will still work fine if "SomeRange" is a single cell instead of a multi-cell reference.
Dim TopLeftCell As String = MyRange(0, 0).GetAddress(False, False,
    ReferenceStyle.A1.A1, False, Nothing)

' Put together a "validation formula" (i.e., =LOWER(A1)="x").
Dim ValidationFormula = String.Format("=LOWER({0})=""x""", TopLeftCell)

' Create validation for all cells in MyRange (A1:B5 in this example), using the 
' ValidationFormula as the basis for this validation.
MyRange.Validation.Add(ValidationType.Custom, ValidationAlertStyle.Stop, 
    ValidationOperator.Default, ValidationFormula, Nothing)

【讨论】:

  • 对不起蒂姆,在继续这个答案时,我可以验证 X 而不将其显示为列表,而是我想输入 X 或 x 并且它应该验证(我不希望出现该列表选择),我怎么能做到这一点。谢谢
  • 我已经更新了我的问题,以适应您关于在不显示实际下拉列表的情况下进行验证的问题(涉及更多)。
  • 再请,我们可以制作一个单元格以允许仅在某个范围内的日期值,例如 01/1900 - 01/2020 ,所以如果他尝试输入一些垃圾日期,例如05/3452 它应该引发警报。“输入有效日期”....请帮助解决这个问题。
  • 此时,也许您应该打开一个新问题。也就是说,在 SpreadsheetGear 中完成此操作的方式与在 Excel 中完成的方式没有太大区别。您可能会查看诸如此类的答案以自行解决:stackoverflow.com/a/16098118/233365
猜你喜欢
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2018-05-08
相关资源
最近更新 更多