Following code is simplified version of TnTinMn
's code.
I also understand what this is doing: values(i, 1) = DateTime.TryParse(CStr(obj).Trim, dt)
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim app As New Excel.Application
app.Visible = True
Dim wb As Excel.Workbook = app.Workbooks.Add()
Dim ws As Excel.Worksheet = CType(wb.Worksheets(1), Excel.Worksheet)
ws.Range("A1:A10000").Value2 = "Hello"
ws.Range("A1").Value2 = "1/1/2000"
ws.Range("A2").Value2 = "I am not a date"
ws.Range("A3").Value2 = 100.123
Dim values As Object(,) = CType(ws.Range("A1:A10000").Value, Object(,))
For i As Integer = 1 To values.GetUpperBound(0)
Dim typDate As Type = GetType(DateTime)
Dim typString As Type = GetType(String)
Dim obj As Object = values(i, 1)
Dim typeOfObj As Type = obj.GetType
Dim dt As DateTime
If typeOfObj Is typDate Then
values(i, 1) = True
ElseIf typeOfObj Is typString Then
values(i, 1) = DateTime.TryParse(CStr(obj).Trim, dt)
Else
values(i, 1) = False
End If
Next
ws.Range("B1:B10000").Value = values
End Sub
Another version;
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim app As New Excel.Application
app.Visible = True
Dim wb As Excel.Workbook = app.Workbooks.Add()
Dim ws As Excel.Worksheet = CType(wb.Worksheets(1), Excel.Worksheet)
ws.Range("A1:A10000").Value2 = "Hello"
ws.Range("A1").Value2 = "1/1/2000"
ws.Range("A2").Value2 = "I am not a date"
ws.Range("A3").Value2 = 100.123
Dim values As Object(,) = CType(ws.Range("A1:A10000").Value, Object(,))
For i = 1 To values.GetUpperBound(0)
If IsDate(values(i, 1)) Then
values(i, 1) = True
Else
values(i, 1) = False
End If
Next
ws.Range("B1:B10000").Value = values
End Sub