0
我的一項任務是創建一個大輸出,從而讓我通過程序生成屏幕,格式化輸出,然後剪切/粘貼爲打印屏幕。我寫了以下內容:展望簡化我的VBA
Range("B6:M6").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.PageSetup.PrintArea = "$B$6:$M$300"
Set ActiveSheet.HPageBreaks(1).Location = Range("B16")
Set ActiveSheet.HPageBreaks(2).Location = Range("B26")
Set ActiveSheet.HPageBreaks(3).Location = Range("B36")
Set ActiveSheet.HPageBreaks(4).Location = Range("B46")
Set ActiveSheet.HPageBreaks(5).Location = Range("B56")
Set ActiveSheet.HPageBreaks(6).Location = Range("B66")
......等等每十行。然後我做了它,它會逐頁剪切和粘貼每個打印區域,並將其放在最後一頁上。這樣,我可以輕鬆地將每個轉換爲.ppt。最終,我想學習足夠的自動化整個過程,但要採取步驟。剪切/粘貼/打印看起來是這樣的:
Range("B6:M15").Select
Selection.CopyPicture Appearance:=xlPrinter, Format:=xlPicture
Sheets("Sheet2").Select
ActiveSheet.Paste
ActiveSheet.Shapes.Range(Array("Picture 1")).Select
Selection.ShapeRange.Width = 719.28
Sheets("Private Company (w Debt)").Select
Range("B16:M25").Select
Selection.CopyPicture Appearance:=xlPrinter, Format:=xlPicture
Sheets("Sheet2").Select
ActiveSheet.Paste
ActiveSheet.Shapes.Range(Array("Picture 2")).Select
Selection.ShapeRange.Width = 719.28
Sheets("Private Company (w Debt)").Select
Range("B26:M35").Select
Selection.CopyPicture Appearance:=xlPrinter, Format:=xlPicture
Sheets("Sheet2").Select
ActiveSheet.Paste
ActiveSheet.Shapes.Range(Array("Picture 3")).Select
Selection.ShapeRange.Width = 719.28
在我的宏,代碼直接跟隨分頁符(這就像40頁左右),它運行體面良好。
有沒有人可以告訴我怎樣才能更直觀地寫這個,這樣VBA就知道每十行設置一個水平分頁符,然後打印剪切/粘貼而不用物理寫出每行並指定確切的單元格?
晚自習變量?編輯:看到[這](http://stackoverflow.com/questions/30378320/excel-vba-loop-through-range)。 – findwindow
也許這對於[CodeReview](http://codereview.stackexchange.com/)而不是SO更好。此外,這將大大有助於學習[如何避免'.Select'](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)。使用宏記錄器在Excel中執行一些簡單,中等和「困難」的事情,並查看代碼以瞭解其工作原理。看起來你只需要花一些時間來學習VB,但只要學習如何刪除'.Select',它將*極大地*幫助啓動你的理解,因爲你將學習如何直接處理數據,而不是選擇 – BruceWayne
查看循環。 '因爲我= 6到295第10步'會循環每十個地方我會重新發送行號。同時調整大小,這將允許您使用第一個單元格Range(「B」&i).resize(10,13)將您的區域設置爲圖像複製。 –