Perhaps something like this:
Function IsWorkNumber(str As String) As Boolean
Dim i As Long
For i = 1 To Len(str)
If Asc(Mid$(str, i, 1)) < Asc("0") Or Asc(Mid$(str, i, 1)) > Asc("9") Then
IsWorkNumber = False
Exit Function
End If
Next i
IsWorkNumber = True
End Function
Sub CreateWorkOrderAndDate()
Dim nLastRow As Long, i As Long, nPos As Long, str As String
Dim aSt As Worksheet, newSt As Worksheet, nRow As Long
Dim sWorkOrder As String, dt As Date
Set aSt = ActiveSheet
ThisWorkbook.Worksheets.Add
Set newSt = ActiveSheet
With newSt
.Columns("A").NumberFormat = "@"
End With
With aSt
nLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 1 To nLastRow
str = .Cells(i, "A")
nPos = InStr(str, " ")
If nPos > 4 Then
sWorkOrder = Left$(str, nPos - 1)
If IsWorkNumber(sWorkOrder) Then
nPos = InStrRev(str, " ")
If nPos > 0 Then
str = Right$(str, Len(str) - nPos)
If InStr(str, "/") > 0 Then
dt = CDate(str)
nRow = nRow + 1
newSt.Cells(nRow, 1) = sWorkOrder
newSt.Cells(nRow, 2) = dt
End If
End If
End If
End If
Next i
End With
End Sub
Bookmarks