小弟不才...之前發問了許多功能, 要結合成一個程式
結果出線如標題樣的錯誤
合併儲存格時就會出錯...., 說也奇怪...第一天撰寫完畢Try Run 都沒問題..第二天就出錯了
我先說明一下程式如何撰寫及邏輯
如下圖所示, 分為A檔案用來執行巨集, B檔案為資料參考來源 ( 因為檔案名稱不一定, 但內容格式固定 )
執行程式方式:
1. 同時打開A, B 檔案 , 程式開始判斷B檔案的分頁3 , 相關欄位,判定沒有開錯B檔案(資料參考來源)
2. 將B檔案需要的欄位複製到A檔案內, 剪剪貼貼
3. 開始針對不需要保留的刪除
3-1. 判斷I~T欄如果空白也刪除
4. 將Z欄位, 第一個『-』 前的資料刪除, 保留要的資料
5. 開始判斷B欄位、C欄位、D欄位、E欄位、F欄位、X欄位、Z欄位 只要相同就合併儲存格
(下圖舉例圖) 出錯也在這
6. 之後就跑先前發問的問題 [發問] 如何將A欄相同的字, 插入新欄位新增到B欄裡
7. 調整欄寬
8. 調整列印設定
※ 程式執行完畢理想狀態如A檔案第三個分頁[ENG] < 手動調整完成, 因出錯無法顯示那樣 >
Q1: 請問出錯的部分程式碼如何修正呢?
錯誤部分- For Each xRR In xArea
- If xRR & xRR(1, 2) <> xRR(0) & xRR(0, 2) Then Set xH = xRR
- If xRR & xRR(1, 2) <> xRR(2) & xRR(2, 2) Then
- Range(xH, xRR).Merge: Range(xH(1, 2), xRR(1, 2)).Merge 'MO
- Range(xH, xRR).Merge: Range(xH(1, 3), xRR(1, 3)).Merge 'PC Code
- Range(xH, xRR).Merge: Range(xH(1, 4), xRR(1, 4)).Merge 'Device
- Range(xH, xRR).Merge: Range(xH(1, 5), xRR(1, 5)).Merge 'Date
- Range(xH, xRR).Merge: Range(xH(1, 24), xRR(1, 24)).Merge 'MO QTY
- Range(xH, xRR).Merge: Range(xH(1, 26), xRR(1, 26)).Merge ' BD NO
- Range(xH, xRR(1, 26)).Borders.LineStyle = 1
- For i = 7 To 10
- Range(xH, xRR(1, 26)).Borders(i).Weight = xlMedium
- Next i
- End If
- Next
複製代碼 Q2: 目前因為小弟太笨, 所以三個按鈕都是個別跑各自分頁, 有辦法跑一次程式, 自動分去三個分頁嗎?
A檔案的三個分頁, 都是參考B檔案分頁3的資料
差異於
A檔案分頁2 是要將如下條件都刪除- For g = .Range("A65536").End(xlUp).Row To 2 Step -1
- If .Cells(g, "A") Like "BGA*" Or _
- .Cells(g, "C") Like "*CSP-L1*" Or _
- .Cells(g, "C") Like "*L1*" Or _
- .Cells(g, "C") Like "*L2*" Or _
- .Cells(g, "C") Like "*CSP*" Or _
- .Cells(g, "C") Like "*ENG*" Or _
- .Cells(g, "C") Like "*HQ-CSP*" Or _
- .Cells(g, "C") Like "*HQ-L2*" Then
- .Rows(g).Delete
- End If
- Next
複製代碼 A檔案分頁3 是只要保留如下條件, 期他都刪除- For g = .Range("A65536").End(xlUp).Row To 2 Step -1
- If Not .Cells(g, "C") Like "*ENG*" Then
- .Rows(g).Delete
- End If
- Next
複製代碼 A檔案分頁4 是只要保留如下條件, 期他都刪除- For y = .Range("A65536").End(xlUp).Row To 2 Step -1
- If Not .Cells(y, "C") Like "*CSP-L1*" And _
- Not .Cells(y, "C") Like "*L1*" And _
- Not .Cells(y, "C") Like "*L2*" And _
- Not .Cells(y, "C") Like "*CSP*" And _
- Not .Cells(y, "C") Like "*HQ-CSP*" And _
- Not .Cells(y, "C") Like "*HQ-L2*" Then
- .Rows(y).Delete
- End If
- Next
- End With
複製代碼
test.rar (656.48 KB)
|