標題:
[分享]
善用錄製巨集可以找到很多問題的答案,以自動分頁為例.
[打印本頁]
作者:
linshin1999
時間:
2010-12-26 19:28
標題:
善用錄製巨集可以找到很多問題的答案,以自動分頁為例.
如果我的檔案有1100個列,我要每50個列分一個頁.
原本設定每列的高度為18.75
經Excel自動分頁以後會每51列自動分頁,那麼變成會在(51,102,153.......)處自動分頁,如果我想在(50,100,150,....)處自動分頁,那麼就要寫一個巨集來處理,於是利用錄製巨集方式再修改一下就可以了.
1)將遊標移至分頁線,(第51列)
2)選取功能區索引標籤的開發人員
3)選取巨集錄製功能
4)選取功能區索引標籤的版面配製
5)將遊標移至第50列
6)選取功能區索引標籤的分頁符號再選取插入分頁
7)選取功能區索引標籤的開發人員,再選停止錄製
如此我們就可以得到如下的VBA巨集
Sub 巨集1()
Rows("51:51").Select '選取第51列
Application.CutCopyMode = False '取消 [剪下] 或 [複製] 模式並移除移動框線。
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell '在第51列的上方(第50列)加入新的分頁符號。
End Sub
可以在如上的巨集再修改一下就可以成為通用的巨集,可以用 Do Loop 指令來修正分頁線,那麼就可以做到依我們的意思來作分頁的動作.
可是在此之前對於:
pplication.CutCopyMode = False
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
這兩行VBA指令一點都不懂,經過錄製巨集再用心一下我們就可以知道我們要的動作如何成為VBA巨集.
要學習VBA巨集的板友們可以大膽的試一試.
作者:
Hsieh
時間:
2010-12-26 20:40
本帖最後由 Hsieh 於 2010-12-26 20:43 編輯
很好,您能把握到錄製巨集的技巧
可嘗試看看,在分頁預覽模式下
將第一條分頁線拖移至A50
看看所有分頁線是否都在50的倍數列上
作者:
linshin1999
時間:
2010-12-26 21:57
版主大大好像不行,還是要使用VBA
作者:
oobird
時間:
2010-12-26 22:22
回復
3#
linshin1999
在分頁預覽模式下拖動分頁線,只要拖動第一條,其他會跟著變動的。[attach]4214[/attach]
作者:
linshin1999
時間:
2010-12-26 23:01
難道這是版本的問題嗎?
我的版本無法這樣做,只會平行移動,不會做固定切割.
凸槌前輩,我的版本真的無法做到,還是方法有誤.(我有拖動第一條線),得到的結果如上述.
作者:
Hsieh
時間:
2010-12-26 23:31
回復
5#
linshin1999
我作業系統也是WIN7
OFFICE也是2010
假如你已經有預覽過,系統自動產生分頁線後
你用VBA再50的倍數列加入分頁線那麼會多出許多分頁才對
以下是錄製出來的巨集
你執行看看是甚麼情形
Sub 巨集1()
'
' 巨集1 巨集
'
'
ActiveWindow.View = xlPageBreakPreview
Set ActiveSheet.HPageBreaks(1).Location = Range("A51")
End Sub
複製代碼
作者:
linshin1999
時間:
2010-12-26 23:42
Hsieh版主大大,不知道是否是我的設定有問題,分頁線仍是(50,101,152,203....),不會更動呢!
作者:
linshin1999
時間:
2010-12-27 00:01
Hsieh版主大大,如果是設定的問可否教我,在我的工作中自動分頁很重要,不然我就要寫一個自動分頁的函數了,謝謝!!
作者:
Hsieh
時間:
2010-12-27 12:15
回復
8#
linshin1999
請你把你的檔案上傳
才知道到你的設定為何?
我在猜是否是標題列問題
作者:
linshin1999
時間:
2010-12-27 13:36
傷腦筋到現在還不會上傳資料.(我會就近請教人,我以前都是用Dos),不過我没設定標題列.
作者:
linshin1999
時間:
2010-12-27 13:45
我的分頁預覽的進入點應該對的吧,(檢視---->分頁預覽)
凸槌板主上傳的範例檔好像也没有標題列設定.
作者:
Hsieh
時間:
2010-12-27 16:37
本帖最後由 Hsieh 於 2010-12-27 16:42 編輯
回復
10#
linshin1999
那可能是上下邊界問題
在預覽列印中,顯示邊界,調整上下邊界讓列印區域容納50列
[attach]4223[/attach]
作者:
linshin1999
時間:
2010-12-27 20:14
版主大大,我有做過模摩,應該是我的VBA有問題,因為我模摩的檔案没問題,我會把問題找出來,可能是我的清單没完全活化,謝謝!!
作者:
GBKEE
時間:
2010-12-28 09:40
回復
13#
linshin1999
在分頁預覽模式下 :
移動任何
自動分頁線(虛線)
就變成手動(實線)
第一條自動分頁線(虛線)
如往上拖移小於
第一條自動分頁線(虛線)
是無法 將所有分頁線固定在移動的倍數列上
第一條自動分頁線(虛線)
如往下拖移大於
第一條自動分頁線(虛線)
可將所有分頁線固定在移動的倍數列上
給你一程序試試看
Sub Ex()
Dim Rng As Range, R%, C%, i%, A%
With ActiveSheet '作用中的工作表
Set Rng = .Range("A1:J182") '所要印列的一連續的範圍
R = 50 '印列每頁固定之列數
C = Rng.Columns.Count '一連續的範圍的欄數
With .PageSetup '印列的設定
.Zoom = False '停止縮放
.FitToPagesTall = 1 '設定為1頁高
.FitToPagesWide = 1 '設定為1頁寬
.CenterHorizontally = True '頁面上的工作表是水平置中
.CenterVertically = True '頁面上的工作表是垂直置中
End With
For i = 1 To Rng.Rows.Count '所要印列的一連續的範圍的總列數
A = IIf(Rng.Rows.Count > i + R, R, Rng.Rows.Count - i + 1)
.PageSetup.PrintArea = Rng(i, 1).Resize(A, C).Address '設定要列印範圍的位置字串
i = i + R - 1
.PrintPreview '印列預覽
'.PrintOut '印列
Next
End With
End Sub
複製代碼
作者:
linshin1999
時間:
2010-12-29 15:29
謝謝GBKEE版主,我會去試試看,有問題再請教.
作者:
linshin1999
時間:
2010-12-29 22:13
GBKEE 這就是一個自動分頁的函數吧,就是我要的,謝謝你的答案.
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)