標題:
VBA巨集執行時好時壞。
[打印本頁]
作者:
lionliu
時間:
2014-5-14 17:07
標題:
VBA巨集執行時好時壞。
各位前輩:
小弟做了一個EXCEL巨集,在執行時會時好時壞。
請教不知應該如何處裡
Sub COMBIN()
'
Cells.Select
Cells.Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False
Range("c1").Select
ActiveCell.FormulaR1C1 = "chkno"
Call chkno
Range("d1").Select
End Sub
Sub chkno()
'
'
Dim myrow As Long
Dim i As Integer
myrow = Range("a1").End(xlDown).Row
For i = 2 To myrow
Selection.NumberFormatLocal = "@"
'If Not IsError(Cells(i, 1) <= 99999 And Cells(i, 2) <= 999) Then
If Not IsError(Cells(i, 1).NumberFormatLocal = "0" And Cells(i, 4).NumberFormatLocal = "0") Then
Cells(i, 3).Value = _
String(6 - Len(Cells(i, 1)), "0") & Cells(i, 1) & String(4 - Len(Cells(i, 2)), "0") & Cells(i, 2)
ElseIf Not IsError(Cells(i, 1).NumberFormatLocal = "@" And Cells(i, 4).NumberFormatLocal = "0") Then
Cells(i, 3).Value = _
Cells(i, 1) & String(4 - Len(Cells(i, 2)), "0") & Cells(i, 2)
ElseIf Not IsError(Cells(i, 1).NumberFormatLocal = "0" And Cells(i, 2).NumberFormatLocal = "@") Then
Cells(i, 3).Value = _
String(6 - Len(Cells(i, 1)), "0") & Cells(i, 3) & String(4 - Len(Cells(i, 2)), "0") & Cells(i, 2)
Else
Cells(i, 3).Value = Cells(i, 1) & Cells(i, 2)
End If
Next i
End Sub
複製代碼
如附件[attach]18284[/attach]
作者:
lionliu
時間:
2014-5-15 11:15
本帖最後由 lionliu 於 2014-5-15 11:18 編輯
回復
1#
lionliu
我的主要問題是C欄由A、B欄合併而成
A欄不足6位數前面0 ,B欄不足4位數前面補0
A B C
23456 23 0234560023
若是文字模式就可以,若數字模式就會出錯。
若是由另一個巨集呼叫主程式一定會錯,單純跑主程式則不一定。
作者:
lionliu
時間:
2014-5-17 09:56
本帖最後由 lionliu 於 2014-5-17 09:59 編輯
回復
2#
lionliu
不好意思
進入誤區
我只要將 c欄直接改為文字既可
Sub chkno()
Dim myrow As Long
Dim i As Integer
myrow = Range("a1").End(xlDown).Row
For i = 2 To myrow
Cells(i, 3).NumberFormatLocal = "@"
Cells(i, 3).Value = _
String(6 - Len(Cells(i, 1)), "0") & Cells(i, 1) & String(4 - Len(Cells(i, 2)), "0") & Cells(i, 2)
End sub
這樣就ok了
不知會不會有bug待觀察
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)