標題:
選取儲存格,Insert Shift:=xlDown (錯誤)
[打印本頁]
作者:
hugh0620
時間:
2019-6-15 14:05
標題:
選取儲存格,Insert Shift:=xlDown (錯誤)
本帖最後由 hugh0620 於 2019-6-15 14:06 編輯
Dear 大大
又是遇到一個撰寫過程中,OK!!
但在收尾測試時,又遇到一個錯誤。 重複檢查了幾次,還是抓不出Bug!!
上來求助!!
[attach]30878[/attach]
用這種方式寫,是可以達到結果,但應該用array(陣列)的方式寫,應該比較方便。
個人VBA寫法:
1、將PO複製到另一欄位上。
2、用資料剖析,將儲存格中多PO拆出來。
3、用雙迴圈方式+儲存格複製插入貼上的方式,完成資料處理。
Private Sub CommandButton1_Click()
Application.ScreenUpdating = True '執行巨集時,螢幕不更新
Dim AA1 As Integer
Dim AA2 As Integer
Dim AA3 As Integer
Dim I As Integer
Dim J As Integer
工作表1.Range("T1:DZ65536").ClearContents '清除資料
''複製
工作表1.Range("C10").Select
工作表1.Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
工作表1.Range("T10").Select
ActiveSheet.Paste
工作表1.Range("V10").Select
ActiveSheet.Paste
' '資料剖析
'工作表1.Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.TextToColumns Destination:=Range("V10"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
AA1 = 工作表1.Range("V65536").End(xlUp).Row '跑筆數迴圈
'=======確認資料剖析後,筆數=========
For I = 11 To AA1
工作表1.Range("U" & I) = Application.CountA(工作表1.Range("U" & I & ":DZ" & I))
Next
'=======================================
For I = AA1 To 11 Step -1 '由最後一筆,往上逐步拆PO
AA2 = 工作表1.Range("U" & I)
If AA2 <> 1 Then
'====插入切割後的PO資料=====
工作表1.Range("B" & I & ":DZ" & I).Select
Selection.Copy
工作表1.Range("B" & I & ":DZ" & I + AA2 - 2).Select
Selection.Insert Shift:=xlDown '錯誤點!!
'==========================
'===Purchase Order 欄位資料,逐筆填回======
AA3 = 0
For J = I To I + AA2 - 1
工作表1.Range("C" & J) = 工作表1.Cells(I, 22 + AA3)
AA3 = AA3 + 1
Next J
End If
Next I
工作表1.Range("V1:DZ65536").ClearContents
Application.ScreenUpdating = True
End Sub
複製代碼
作者:
准提部林
時間:
2019-6-16 10:34
沒有說明, 先試:
[attach]30881[/attach]
作者:
hugh0620
時間:
2019-6-17 09:09
本帖最後由 hugh0620 於 2019-6-17 09:18 編輯
回復
2#
准提部林
Dear 大大
感謝你的回覆,
解決了資料剖析後,文字轉數字後,第1個字碼為0時會不見得問題。
只是,我的困擾不是在資料剖析上。
而是在將資料重整,請看一下原文程式碼 第52列"Selection.Insert Shift:=xlDown '錯誤點!!"
在檔案中有3個Sheet、工具、結果、範例
範例:同事的需求。
結果:僅是分析資料。原始資料為514筆,拆PO後會有848筆。(僅是用來比對跑完後的比數是否為848筆)
工具:用程式碼跑完後的結果。
以上補充說明。
作者:
hugh0620
時間:
2019-6-17 10:27
本帖最後由 hugh0620 於 2019-6-17 10:28 編輯
回復
2#
准提部林
[attach]30886[/attach]
上文筆誤:原始資料為514筆,拆PO後會有848筆。
正確是原始資料為513筆。
利用大大的版本,加上我原本的程式碼,已經可以使用。
目的:如果當列的PO>1時,要將PO拆成多列。(如PO=4,要拆成4列資料。)
EX、 PO=1,2,3,4 是在一個儲存格
變成 1
2
3
4
我的程式碼應該還是有指定變數的問題,是否可以幫忙確認,需要如何調整才能避免BUG!!
作者:
准提部林
時間:
2019-6-17 19:57
回復
4#
hugh0620
再試看:
[attach]30887[/attach]
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)