返回列表 上一主題 發帖

[發問] 如何依據儲存格函數判斷列印範圍?

[發問] 如何依據儲存格函數判斷列印範圍?

想請問各位前輩們
如何依照指定儲存格函數變化,來自動設定列印範圍

附件中若B3的數值有變化,則會依照數值做列印票數變化

支票5聯標準.rar (154.15 KB)

回復 1# jackson7015
是不是這個意思?
[B3]出現20, PrintArea 設定為列印 第20套 五連單?
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim r1, r2 As Integer, rng As Range
  3.     Set rng = Worksheets("支票").[B3]
  4.     If Not Intersect(Target, rng) Is Nothing Then
  5.         r1 = [B3] * 22 + 22: r2 = [B3] * 22 + 43
  6.         ActiveSheet.PageSetup.PrintArea = _
  7.              "$I$" & r1 & ":$W$" & r2 & ",$Y$" & r1 & ":$AM$" & r2 & ",$AO$" & r1 & ":$BC$" & r2 _
  8.                    & ",$BE$" & r1 & ":$BS$" & r2 & ",$BU$" & r1 & ":$CI$" & r2
  9.        ActiveSheet.PrintPreview    '預覽列印
  10.     End If
  11. End Sub
複製代碼

TOP

回復 2# yen956

感謝yen956前輩的指導

想請教的是列印所有的部分
是否可以更改成[B3]=31的時候列印部分為1~31的五聯單 ?

因為好像會牽涉到頁數部分
就是列印出來的1~5頁是第一份五聯單、6~10頁為第二份五聯單...類推
所以不曉得該更改哪些部分

想請大大們幫忙一下,感激不盡~

TOP

回復 3# jackson7015
試試看:
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim r1, r2 As Integer, rng As Range
  3.     Set rng = Worksheets("支票").[B3]
  4.     If Not Intersect(Target, rng) Is Nothing Then
  5.         For i = 1 To [B3]
  6.             r1 = i * 22 + 22: r2 = i * 22 + 43
  7.             ActiveSheet.PageSetup.PrintArea = _
  8.                  "$I$" & r1 & ":$W$" & r2 & ",$Y$" & r1 & ":$AM$" & r2 & ",$AO$" & r1 & ":$BC$" & r2 _
  9.                        & ",$BE$" & r1 & ":$BS$" & r2 & ",$BU$" & r1 & ":$CI$" & r2
  10.         Next
  11.     End If
  12. End Sub
複製代碼

TOP

回復 3# jackson7015
  1. '支票 工作表模組 的程式碼
  2. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  3.     If Target.Address = "$B$3" And [B3] > 0 Then
  4.        If MsgBox("印列 支票 " & Target & "筆", vbYesNo + vbInformation) = vbYes Then
  5.             Sheet_PageSetup
  6.             Sheet_PrintOut
  7.        End If
  8.     End If
  9. End Sub
  10. Private Sub Sheet_PageSetup()      '印列的設定
  11.     With PageSetup
  12.         .PrintArea = "$I$44:$W$65"  '印列範圍   "一張支票的範圍"
  13.         .CenterHorizontally = True  '如果列印時頁面上的工作表是水平置中的則為 True
  14.         .CenterVertically = True    '如果列印時頁面上的工作表是垂直置中的則為 True
  15.         .PaperSize = xlPaperB4      '設定紙張大小  '可看PaperSize 說明
  16.         .FitToPagesWide = 1         '設定頁寬=1頁
  17.         .FitToPagesTall = 1         '設定頁高=1頁
  18.     End With
  19. End Sub
  20. Private Sub Sheet_PrintOut()
  21.     For I = 1 To [B3]
  22.         [L50] = Cells(I + 6, "C")
  23.         [M50] = Cells(I + 6, "D")
  24.         [O50] = Cells(I + 6, "E")
  25.         [P50] = Cells(I + 6, "F")
  26.         [Q50] = Cells(I + 6, "G")
  27.         PrintOut Copies:=5    '"一張支票的範圍"  印列 五聯單
  28.     Next
  29. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 jackson7015 於 2014-4-10 15:41 編輯

回復 4# yen956
回復 5# GBKEE

感謝版大和前輩們的協助
今天研究了一天
愚鈍的我一直不曉得該把程式法放在哪個地方
有放置到工作表單1內的時候,可以動作
但是造成點擊到[B3]就會執行程式碼
其他試過放在物件、表單、模組..內的程式碼都沒有反應
且程式碼執行時,無法預覽列印
只有直接列印出來才能知道是否正確(花了蠻多張紙的...)

是否指導小弟該正確放在何處...感激不盡...:L

TOP

回復 6# jackson7015

支票 工作表模組 的程式碼

感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 7# GBKEE

感謝GBKEE版大的指導
原本以為是會以Workbook_BeforePrint,所以才搞混了
重新查看了一遍網站上的舊文,慢慢瞭解編譯的方式了

巨集運作得很完美,再次感謝版上的大大們的幫忙
謝謝~

TOP

回復 7# GBKEE

不好意思,想再請GBKEE大大幫忙看一下

因之前都直接手KEY,最近才開始使用此程式
發現了一些問題

列印範圍的部份有錯誤
第一聯要從J:X;第二聯要從Y:AN;類推..

列印部分變成第一聯的J:W有五份
應該要1~5聯各一份,每聯的列印範圍為22R*16C

執行列印前無法先執行ActiveSheet.PrintPreview    '預覽列印
  
再請大大幫忙看看要更改哪些部分

TOP

回復 9# jackson7015
列印範圍的部份有錯誤
第一聯要從J:X;第二聯要從Y:AN;類推..
列印部分變成第一聯的J:W有五份
應該要1~5聯各一份,每聯的列印範圍為22R*16C

你1樓的附檔,資料只有A:H 欄有資料可以重新附檔說明看看嗎.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題