【问题标题】:Filtering excel dates in VB.net在 VB.net 中过滤 Excel 日期
【发布时间】:2016-04-25 17:35:18
【问题描述】:

我有一行非常简单的代码可以在 Excel VBA 中运行,但我终其一生都无法弄清楚它在 VB.NET 中是如何工作的。任何帮助将不胜感激。

 Selection.AutoFilter Field:=8, Criteria1:=">=" & sdate

编辑:完整代码

 Dim sDate as Date
 Dim xlapp As New Excel.Application
 sdate = DateTimePicker1.Value.Date
 OpenFileDialog1.Filter = "Excel Documents | *.xls; *.xlsx; *.xlsxm"
 If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
 xlWB= xlapp.Workbooks.Open(OpenFileDialog1.FileName)

 xlWB.Worksheets("Data").Range("H1").Select()
 xlapp.Selection.AutoFilter()               
 xlapp.Selection.AutoFilter(Field:=8, Criteria1:="=>" & sDate)

【问题讨论】:

  • 此代码给出错误或过滤器错误?
  • 不抛出错误,过滤器只是空白,没有选择行。
  • 我已经把你的代码改成答案,你可以测试一下。
  • 完美运行,谢谢!

标签: vb.net vba date


【解决方案1】:

首先,您必须将日期从DateTimePicker1 转换为日期格式,使用DateSerial,并将日期的de 值转换为OLE Automation,使用ToOADate

您还必须将条件运算符 "=>" 更改为 ">=",后面必须有 = 号。

Dim sDate As Date
Dim xlapp As New Excel.Application
Dim xlWB As Excel.Workbook
Dim dpDate As Date = DateTimePicker1.Value.Date
sDate = DateSerial(dpDate.Year, dpDate.Month, dpDate.Day)
OpenFileDialog1.Filter = "Excel Documents | *.xls; *.xlsx; *.xlsxm"
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
    xlWB = xlapp.Workbooks.Open(OpenFileDialog1.FileName)

    xlWB.Worksheets("Data").Range("H1").Select()
    xlapp.Selection.AutoFilter()
    xlapp.Selection.AutoFilter(Field:=8, Criteria1:=">=" & sDate.ToOADate)
End If

【讨论】:

  • 我在VB.NET中有括号,但仍然无法正常工作。
  • 你使用的范围选择是什么?
  • 查看我的编辑,我已经添加了完整的代码。我怀疑它与自动过滤器中的标准是一个字符串有关吗?不过它在 excel 中运行良好。
  • 字段 8 中的数据类型是什么,条件 (sdate) 中的值是什么?
  • 该列是所有日期。 sDate 的值是用户选择的 DateTimePicker 输入中的值。
猜你喜欢
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 2015-04-03
相关资源
最近更新 更多