VB6,CDate(sheet.range(“B”,counter))

时间:2013-05-26 01:33:53

标签: excel vb6

我一直在寻找解决方案,但没有成功。 我需要按日期标准填充列表视图,我知道如何用简单的标准填充它,但是日期标准给了我很多问题。

我的Excel文档中的B列中有日期(dd.mm.yyyy),我需要将它们转换为日期,并与我从表单上的日历控件中选择的日期进行比较。如何在VB6中将该默认日期设置为dd.mm.yyyy? 我是初学者,我不知道我哪里错了,请帮助我。提前谢谢。

Do Until .Cells(myCounter, 1) & "" = ""
  strDate = listObj.Range("B" & myCounter)
  myDate= CDate(strDate) >>>>>>>>>> Run-time error "13" Mismatch type
  If myDate > Calendar1.Value Then
    .........................
  End If
  myCounter =myCounter + 1
Loop

编辑:这是我的整个代码

    Dim excelObj As excel.Application
    Dim wbObj As excel.Workbook
    Dim sheetObj As Worksheet
    Dim myCounter As Long
    Set excelObj = New excel.Application
    excelObj.Visible = False
    Set wbObj = excelObj.Workbooks.Open(App.Path & "\excel_document.xlsx")
    Set sheetObj = excelObj.Worksheets("Sheet1")
    Dim L As ListItem
    Dim myDateAs Date
    Dim strDate As String
    ListView1.ListItems.Clear
    With sheetObj
    myCounter = 2
    Do Until .Cells(myCounter, 1) & "" = ""
    strDate = sheetObj.Range("B" & myCounter)
    myDate= CDate(strDate)
    If myDate > Calendar1.Value Then
    ........
    End If
    myCounter = myCounter + 1
    Loop
    End With
    excelObj.Quit

在excel文档中,B列的格式为Date - dd / mm / yyyy。我也试过不做CDate,但没有成功。

1 个答案:

答案 0 :(得分:1)

你是如何宣布strDate的? Dim strDate As String?变异?没声明?

考虑到你要做的事情,它确实应该被声明为Variant或Date。看起来您将其声明为String,并且您还在单元格上输入字符串。

在Excel中输入日期值时,应将其输入为日期而不是字符串。这很简单;只需确保单元格格式为“dd.mm.yyyy”,当您键入它们时,它们将正确接受这些日期。当您从VB检索值时,它们将作为日期检索,您将能够像这样操作它们。

如果您确实想要将该格式的字符串转换为Date值,则可以使用以下方法:Parse finnish date string to Date Type in VB6