Board logo

標題: 選取儲存格,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、用雙迴圈方式+儲存格複製插入貼上的方式,完成資料處理。
  1. Private Sub CommandButton1_Click()

  2. Application.ScreenUpdating = True    '執行巨集時,螢幕不更新

  3. Dim AA1 As Integer
  4. Dim AA2 As Integer
  5. Dim AA3 As Integer
  6. Dim I As Integer
  7. Dim J As Integer

  8. 工作表1.Range("T1:DZ65536").ClearContents   '清除資料

  9. ''複製
  10.     工作表1.Range("C10").Select
  11.     工作表1.Range(Selection, Selection.End(xlDown)).Select
  12.     Selection.Copy
  13.     工作表1.Range("T10").Select
  14.     ActiveSheet.Paste
  15.     工作表1.Range("V10").Select
  16.     ActiveSheet.Paste
  17. ' '資料剖析
  18.     '工作表1.Range(Selection, Selection.End(xlDown)).Select
  19.     Application.CutCopyMode = False
  20.     Selection.TextToColumns Destination:=Range("V10"), DataType:=xlDelimited, _
  21.         TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
  22.         Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
  23.         :=Array(1, 1), TrailingMinusNumbers:=True

  24. AA1 = 工作表1.Range("V65536").End(xlUp).Row  '跑筆數迴圈

  25. '=======確認資料剖析後,筆數=========
  26. For I = 11 To AA1

  27.     工作表1.Range("U" & I) = Application.CountA(工作表1.Range("U" & I & ":DZ" & I))
  28.    
  29. Next
  30. '=======================================



  31. For I = AA1 To 11 Step -1     '由最後一筆,往上逐步拆PO

  32.     AA2 = 工作表1.Range("U" & I)
  33.     If AA2 <> 1 Then
  34.    
  35.         '====插入切割後的PO資料=====
  36.             
  37.         工作表1.Range("B" & I & ":DZ" & I).Select
  38.         Selection.Copy
  39.         工作表1.Range("B" & I & ":DZ" & I + AA2 - 2).Select
  40.         
  41.         Selection.Insert Shift:=xlDown       '錯誤點!!
  42.         
  43.         '==========================
  44.         
  45.         '===Purchase Order 欄位資料,逐筆填回======
  46.         AA3 = 0
  47.         For J = I To I + AA2 - 1
  48.             工作表1.Range("C" & J) = 工作表1.Cells(I, 22 + AA3)
  49.             AA3 = AA3 + 1
  50.         Next J
  51.         
  52.     End If

  53. Next I

  54. 工作表1.Range("V1:DZ65536").ClearContents

  55. Application.ScreenUpdating = True


  56. 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/)