The only way to keep leading 0 is to treat data as string/text.
Here's a sample routine using your data as test data.
Code:
Sub testMay19()
10 On Error GoTo testmay19_Error
Dim i As Integer
Dim numpart As String, otherpart As String
Dim str(3) As String
'test data
20 str(0) = "240DIZ"
30 str(1) = "268004SAMR 4-2"
40 str(2) = "109090034abcd 55"
50 str(3) = "089011CTX"
'process test data
60 For i = 0 To UBound(str)
70 If Left(str(i), 1) = "0" Then
80 numpart = "0" & val(str(i))
90 Else
100 numpart = val(str(i))
120 End If
'process remainder of test data record
110 otherpart = Right(str(i), Len(str(i)) - Len(numpart))
130 Debug.Print str(i) & Space(20 - Len(str(i))) & " ---> " & "numpart: " & numpart & vbTab & "otherpart: " & otherpart
140 Next i
150 On Error GoTo 0
160 Exit Sub
testmay19_Error:
170 MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure testmay19, line " & Erl & "."
End Sub
And the results:
240DIZ ---> numpart: 240 otherpart: DIZ
268004SAMR 4-2 ---> numpart: 268004 otherpart: SAMR 4-2
109090034abcd 55 ---> numpart: 109090034 otherpart: abcd 55
089011CTX ---> numpart: 089011 otherpart: CTX