vinejason
高中生
離線
文章: 194
|
以下程式碼只要在表單中輸入要列印的單號 程式則進行:複製、貼上、列印動作 但是 執行動作有點慢,特來請教可否讓其更精簡(瘦身)且加快速率 謝謝您們 Public Sub prtbill(bgnum, ndnum) Sheets("銷貨帳單").Unprotect '避開保護 Dim rng As Range Sheet2.Activate Set rng = Union(Range("B9:c28"), Range("C4:D4"), Range("C5:D5"), Range("C6:D6"), Range("F9:F28"), Range("d9:D28"), Range("C3")) rng.ClearContents fmidx = CLng(bgnum) toidx = CLng(ndnum) With Sheet3 For i = fmidx To toidx rr = 2 nn = 9 Do Until .Cells(rr, "c") = Empty If .Cells(rr, 3).value = i Then Cells(3, "g") = .Cells(rr, 3).Text Cells(3, "c") = .Cells(rr, 1) Cells(4, "g") = .Cells(rr, 4) Cells(5, "g") = .Cells(rr, 4) Cells(7, "g") = .Cells(rr, 9) Cells(nn, "c") = .Cells(rr, "J") Cells(nn, "d") = .Cells(rr, "f") Cells(nn, "f") = .Cells(rr, "g") [c4] = WorksheetFunction.VLookup([c3], Sheets("客戶資料").Range("A:I"), 2, 0) [c5] = WorksheetFunction.VLookup([c3], Sheets("客戶資料").Range("A:I"), 7, 0) [c6] = WorksheetFunction.VLookup([c3], Sheets("客戶資料").Range("A:I"), 6, 0) [G6] = WorksheetFunction.VLookup([c3], Sheets("客戶資料").Range("A:I"), 3, 0) nn = nn + 1 If nn = 29 Then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True rng.ClearContents nn = 9 End If End If rr = rr + 1 Loop If nn > 9 Then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True rng.ClearContents Next i End With Set BillRange = Worksheets("銷貨清單").Range("C1:C65535") n = Application.WorksheetFunction.Max(BillRange) Sheets("銷貨帳單").Select Range("G3").Select ActiveCell.formulaR1C1 = n + 1 Sheets("銷貨帳單").Select Range("C3").Select ActiveSheet.Protect '恢復保護 End Sub
[附件已被管理員刪除]
|