返回列表 上一主題 發帖

[發問] Range'方法('_Global'物件)失敗

[發問] Range'方法('_Global'物件)失敗

小弟不才...之前發問了許多功能, 要結合成一個程式
結果出線如標題樣的錯誤

合併儲存格時就會出錯...., 說也奇怪...第一天撰寫完畢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: 請問出錯的部分程式碼如何修正呢?
錯誤部分
  1. For Each xRR In xArea
  2.     If xRR & xRR(1, 2) <> xRR(0) & xRR(0, 2) Then Set xH = xRR
  3.     If xRR & xRR(1, 2) <> xRR(2) & xRR(2, 2) Then
  4.       Range(xH, xRR).Merge: Range(xH(1, 2), xRR(1, 2)).Merge    'MO
  5.       Range(xH, xRR).Merge: Range(xH(1, 3), xRR(1, 3)).Merge    'PC Code
  6.       Range(xH, xRR).Merge: Range(xH(1, 4), xRR(1, 4)).Merge    'Device
  7.       Range(xH, xRR).Merge: Range(xH(1, 5), xRR(1, 5)).Merge    'Date
  8.       Range(xH, xRR).Merge: Range(xH(1, 24), xRR(1, 24)).Merge  'MO QTY
  9.       Range(xH, xRR).Merge: Range(xH(1, 26), xRR(1, 26)).Merge  ' BD NO
  10.       Range(xH, xRR(1, 26)).Borders.LineStyle = 1
  11.       For i = 7 To 10
  12.           Range(xH, xRR(1, 26)).Borders(i).Weight = xlMedium
  13.       Next i
  14.     End If
  15. Next
複製代碼
Q2: 目前因為小弟太笨, 所以三個按鈕都是個別跑各自分頁, 有辦法跑一次程式, 自動分去三個分頁嗎?
A檔案的三個分頁, 都是參考B檔案分頁3的資料
差異於
A檔案分頁2 是要將如下條件都刪除
  1.      For g = .Range("A65536").End(xlUp).Row To 2 Step -1
  2.         If .Cells(g, "A") Like "BGA*" Or _
  3.            .Cells(g, "C") Like "*CSP-L1*" Or _
  4.            .Cells(g, "C") Like "*L1*" Or _
  5.            .Cells(g, "C") Like "*L2*" Or _
  6.            .Cells(g, "C") Like "*CSP*" Or _
  7.            .Cells(g, "C") Like "*ENG*" Or _
  8.            .Cells(g, "C") Like "*HQ-CSP*" Or _
  9.            .Cells(g, "C") Like "*HQ-L2*" Then
  10.             .Rows(g).Delete
  11.         End If
  12.      Next
複製代碼
A檔案分頁3 是只要保留如下條件, 期他都刪除
  1.      For g = .Range("A65536").End(xlUp).Row To 2 Step -1
  2.            If Not .Cells(g, "C") Like "*ENG*" Then
  3.             .Rows(g).Delete
  4.         End If
  5.      Next
複製代碼
A檔案分頁4 是只要保留如下條件, 期他都刪除
  1.     For y = .Range("A65536").End(xlUp).Row To 2 Step -1
  2.         If Not .Cells(y, "C") Like "*CSP-L1*" And _
  3.            Not .Cells(y, "C") Like "*L1*" And _
  4.            Not .Cells(y, "C") Like "*L2*" And _
  5.            Not .Cells(y, "C") Like "*CSP*" And _
  6.            Not .Cells(y, "C") Like "*HQ-CSP*" And _
  7.            Not .Cells(y, "C") Like "*HQ-L2*" Then
  8.             .Rows(y).Delete
  9.         End If
  10.      Next
  11. End With
複製代碼
test.rar (656.48 KB)

回復 4# 准提部林


    改完後第一欄抬頭欄位 會被合併且有資料, 感覺是被合併了
如下圖


今天早上嘗試, 未修改程式碼前, 如下另外一份B檔案( 格式都沒變 )  , 竟然HQ可以跑得出來, 但其他ENG , 傳統無法執行, 真的不知道發生什麼事
B-1.rar (738.45 KB)

TOP

回復 6# 准提部林


    感謝大大的support @@ 我版本是使用2003 撰寫 !!

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題