Board logo

標題: 可否協助簡化程式 [打印本頁]

作者: 周大偉    時間: 2015-6-23 18:41     標題: 可否協助簡化程式

各高人, 好
小弟錄制了一個程式, 使用沒有問題, 但程式頗長, 而使用時介面閃動, 此錄制程式可有簡化空間, 請高人們協助, 謝謝!!

Sub 更新()
'
' 資料更新 巨集
'

'
    Windows("abc倉庫資料.xlsm").Activate
    Sheets("總公司倉庫").Select
    Range("J4").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS([提取單.xlsm]提取單!C7,[提取單.xlsm]提取單!C15,RC7,[提取單.xlsm]提取單!C3,RC2)+SUMIFS([提取單.xlsm]提取單!R3C7,[提取單.xlsm]提取單!R3C15,RC[-3],[提取單.xlsm]提取單!R3C3,RC[-8])+SUMIFS([提取單.xlsm]提取單!R3C7,[提取單.xlsm]提取單!R3C15,RC[-3],[提取單.xlsm]提取單!R3C3,RC[-8])"
    Range("K4").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS([入貨單.xlsm]Sheet1!C8,[入貨單.xlsm]Sheet1!C13,RC7,[入貨單.xlsm]Sheet1!C3,RC2)+SUMIFS([入貨單.xlsm]Sheet1!R3C8,[入貨單.xlsm]Sheet1!R3C13,RC[-4],[入貨單.xlsm]Sheet1!R3C3,RC[-9])"
    Range("L4").Select
    ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-2]+RC[-1]"
    ActiveWorkbook.Save
    Range("J4:L4").Select
    Selection.AutoFill Destination:=Range("J4:L22"), Type:=xlFillDefault
    Range("J4:L22").Select
    Range("L22").Select
    Sheets("分公司倉庫").Select
    Range("J4").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS([提取單.xlsm]提取單!C7,[提取單.xlsm]提取單!C15,RC7,[提取單.xlsm]提取單!C3,RC2)+SUMIFS([提取單.xlsm]提取單!R3C7,[提取單.xlsm]提取單!R3C15,RC[-3],[提取單.xlsm]提取單!R3C3,RC[-8])"
    Range("K4").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIFS([入貨單.xlsm]Sheet1!C8,[入貨單.xlsm]Sheet1!C13,RC7,[入貨單.xlsm]Sheet1!C3,RC2)+SUMIFS([入貨單.xlsm]Sheet1!R3C8,[入貨單.xlsm]Sheet1!R3C13,RC[-4],[入貨單.xlsm]Sheet1!R3C3,RC[-9])"
    Range("L4").Select
    ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-2]+RC[-1]"
    ActiveWorkbook.Save
    Range("J4:L4").Select
    Selection.AutoFill Destination:=Range("J4:L22"), Type:=xlFillDefault
    Range("J4:L22").Select
    Range("L22").Select
     Sheets("總公司倉庫").Select
    Range("J4:L22").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("L4").Select
    Application.CutCopyMode = False
    Sheets("分公司倉庫").Select
    Range("J4:L22").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("L4").Select
    Application.CutCopyMode = False
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 4
    Windows("提取單.xlsm").Activate
    Range("A2").Select
End Sub
作者: joey0415    時間: 2015-6-23 19:59

回復 1# 周大偉

分段錄制,分段簡化,你會更有成就感
作者: lpk187    時間: 2015-6-24 08:36

回復 1# 周大偉


    版主的這篇可以參考
http://forum.twbts.com/viewthrea ... p%3Bfilter%3Ddigest
作者: 周大偉    時間: 2015-6-24 12:39

本帖最後由 周大偉 於 2015-6-24 12:51 編輯

回復 3# lpk187                                                                     小弟所識有限,上述提及文章也曾參考,但功力太淺,故把此錄制巨集上傳,希望得到回應,最後謝謝提示,祝快樂。 此文手機覆,字體位置偏離,見諒。
作者: lpk187    時間: 2015-6-24 14:34

回復 4# 周大偉

沒檔案可以試,也不知對不對!
  1. Sub 更新()
  2. '
  3. ' 資料更新 巨集
  4. '

  5. '
  6.     Windows("abc倉庫資料.xlsm").Activate
  7.     Sheets("總公司倉庫").Select
  8.     Range("J4") = "=SUMIFS([提取單.xlsm]提取單!C7,[提取單.xlsm]提取單!C15,RC7,[提取單.xlsm]提取單!C3,RC2)+SUMIFS([提取單.xlsm]提取單!R3C7,[提取單.xlsm]提取單!R3C15,RC[-3],[提取單.xlsm]提取單!R3C3,RC[-8])+SUMIFS([提取單.xlsm]提取單!R3C7,[提取單.xlsm]提取單!R3C15,RC[-3],[提取單.xlsm]提取單!R3C3,RC[-8])"
  9.     Range("K4") = "=SUMIFS([入貨單.xlsm]Sheet1!C8,[入貨單.xlsm]Sheet1!C13,RC7,[入貨單.xlsm]Sheet1!C3,RC2)+SUMIFS([入貨單.xlsm]Sheet1!R3C8,[入貨單.xlsm]Sheet1!R3C13,RC[-4],[入貨單.xlsm]Sheet1!R3C3,RC[-9])"
  10.     Range("L4") = "=RC[-3]-RC[-2]+RC[-1]"
  11.     ActiveWorkbook.Save
  12.     Range("J4:L4").AutoFill Destination:=Range("J4:L22"), Type:=xlFillDefault
  13.     Range("L22").Select
  14.     Sheets("分公司倉庫").Select
  15.     Range("J4") = "=SUMIFS([提取單.xlsm]提取單!C7,[提取單.xlsm]提取單!C15,RC7,[提取單.xlsm]提取單!C3,RC2)+SUMIFS([提取單.xlsm]提取單!R3C7,[提取單.xlsm]提取單!R3C15,RC[-3],[提取單.xlsm]提取單!R3C3,RC[-8])"
  16.     Range("K4") = "=SUMIFS([入貨單.xlsm]Sheet1!C8,[入貨單.xlsm]Sheet1!C13,RC7,[入貨單.xlsm]Sheet1!C3,RC2)+SUMIFS([入貨單.xlsm]Sheet1!R3C8,[入貨單.xlsm]Sheet1!R3C13,RC[-4],[入貨單.xlsm]Sheet1!R3C3,RC[-9])"
  17.     Range("L4") = "=RC[-3]-RC[-2]+RC[-1]"
  18.     ActiveWorkbook.Save
  19.     Range("J4:L4").AutoFill Destination:=Range("J4:L22"), Type:=xlFillDefault
  20.     Sheets("總公司倉庫").Select
  21.     Range("J4:L22").Copy
  22.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  23.         :=False, Transpose:=False
  24.     Range("L4").Select
  25.     Application.CutCopyMode = False
  26.     Sheets("分公司倉庫").Select
  27.     Range("J4:L22").Copy
  28.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  29.         :=False, Transpose:=False
  30.     Range("L4").Select
  31.     Application.CutCopyMode = False
  32.     ActiveWindow.ScrollRow = 5
  33.     ActiveWindow.ScrollRow = 4
  34.     Windows("提取單.xlsm").Activate
  35.     Range("A2").Select
  36. End Sub
複製代碼

作者: 周大偉    時間: 2015-6-24 22:09

回復 5# lpk187
謝謝回應, 祝願快樂..




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)