|
楼主 |
发表于 2015-12-25 10:01
|
显示全部楼层
谢谢斑竹的帮助,这是最后我自己整理的,这样即使中间有循环了,而且如果数据循环有错还能报错。即使工单输入的时候有错,出现字母,程序也能停下
Option Explicit
Dim Arr(1 To 1000, 1 To 2), s
Sub chaikai1()
'
' 拆
'
'
Dim A, i, id2, id3, zhi
s = 0
A = Range("a1").CurrentRegion
For i = 2 To UBound(A)
zhi = Cells(i, 1)
id2 = Mid(zhi, 9, 2)
id3 = Right(zhi, 2)
If CInt(id2) > CInt(id3) Then
Cells(i, 5).Value = "有错"
End If
Call chaikai2(A(i, 1), A(i, 2))
[c1].Resize(UBound(Arr), UBound(Arr, 2)) = Arr
Next i
End Sub
Sub chaikai2(x, y)
'
' 拆
'
'
Dim A, B, id, j, i, AE, x1, x2, cf1, cf2, y1, y2
id = Left(x, 8)
x = Mid(x, 9)
A = VBA.Split(x, ",")
For j = 0 To UBound(A)
If InStr(A(j), "-") > 0 Then
AE = VBA.Split(A(j), "-")
x1 = CStr(AE(0))
x2 = CStr(AE(1))
cf1 = Right(x1, 2)
cf2 = Right(x2, 2)
y1 = CInt(cf1)
y2 = CInt(cf2)
For i = y1 To y2
s = s + 1
Arr(s, 1) = id & Format(i, "00")
Arr(s, 2) = y
Next i
Else
s = s + 1
Arr(s, 1) = id & Format(A(j), "00")
Arr(s, 2) = y
End If
Next j
End Sub
|
|