Board logo

標題: 請問Hsieh版主 HPageBreaks(1).Location HpageBreak() 中的引數 1 的意義為何? [打印本頁]

作者: linshin1999    時間: 2011-1-1 02:09     標題: 請問Hsieh版主 HPageBreaks(1).Location HpageBreak() 中的引數 1 的意義為何?

Hsieh版主,在自動分頁的討論中你有提到列分頁的方法:
Set ActiveSheet.HPageBreaks(1).Location = Range("A51")
HPageBreaks(1) 中的引數 1 是何意,我查不到說明,請指點為荷?
第(I)條線或工作表(I)或第(I)頁?
作者: Hsieh    時間: 2011-1-1 11:42

第一條分頁線
請參閱VBA說明,此處的1就是item的值

HPageBreaks 物件成員
列印範圍內所有水平分頁符號的集合。
方法
  名稱 描述
Add 會新增水平分頁符號。
屬性
  名稱 描述
Application 在不搭配物件識別符號使用的情況下,這個屬性會傳回代表 Microsoft Excel 應用程式的 Application 物件。當搭配物件識別符號使用時,這個屬性會傳回 Application 物件,代表所指定物件的建立者 (這個屬性可以搭配 OLE Automation 物件一起使用,來傳回該物件的應用程式)。唯讀的。
Count 會傳回代表集合中物件數的 Long 值。
Creator 會傳回 32 位元整數,指出用以建立這個物件的應用程式。唯讀的 Long。
Item 傳回集合中的單一物件。
Parent 會傳回所指定物件的父物件。唯讀的。
其中  count是分頁線數量
      item是指定第幾條分頁線
作者: linshin1999    時間: 2011-1-1 14:24

Hsieh版主,没有你的說明,不知道VBA的說明檔和Excel的說明檔是分開的,就是說Excel 活頁簿的說明檔和VBA是不同的平台,所以當我在Excel的活頁簿是找不到HPageBreaks物件的.
再回到我們的主題,分頁線的設定就像是跳頁符號一樣,可以經過運算然後給HpageBreaks當引數使用是嗎?
count 會傳回代表集合中物件數的 Long 值, 意思是如果要分頁的工作表要分50頁,那麼count的值 = 50 是嗎?說明中的物件是指每個分頁是嗎?
item傳回集合中的單一物件。是指單一分頁的Location嗎?
作者: Hsieh    時間: 2011-1-1 23:28

回復 3# linshin1999


    或許你這樣思考會好一點
分頁線是指你要分頁列印的頁與頁之間的分隔符號
當EXCEL自動分頁時,會以你上邊界與下邊界之間所能容納的列數作為預設分頁
所以,當你的內容不超過這個範圍時(一頁便能容納所有內容)
那麼並不會有分頁線的產生,所以count屬性值為0,但總頁數是1
若是你要手動加入分頁線(原本一頁的內容分成2頁)
那麼可使用ADD方法加入分頁線
加入後就會有一條分頁線
count屬性值為1,但總頁數是2
若要取得這一條分頁線,就可使用期item屬性
HPageBreaks(1)的代表意義跟 HPageBreaks.item(1)是一樣的
而Location屬性代表是分頁線所在位置,並不是指分頁線本身
HPageBreaks(1).Location 這句的解釋就是
第一條水平分頁線所在的儲存格位置
作者: linshin1999    時間: 2011-1-3 00:08

1).分頁:如以以前程式的觀點就是跳頁嗎?我要的就是跳頁控制.

2)1.EXCEL自動分頁時,會以你上邊界與下邊界之間所能容納的列數作為預設分頁.
版主Excel會在上下邊界裝滿後放上分頁線是嗎?如果這條分頁線不和使用者的意思,使用者是可以透程式定訂新的分頁如果是這樣就簡單了.(不要去理會Excel自己跑出來的分頁線就可以了)
如果Excel跳出來的分頁是(每53個Line),那我們控制的分頁小於53(例如:50),那麼我的報表檔就可以每50列跳一頁是嗎?

2)Location屬性代表是分頁線所在位置,並不是指分頁線本身
分頁線所在的位置不就是在那裡會跳一頁嗎?Location屬性代表是分頁線所在位置,在Excel的工作表不是會有一條虛線跑出來嗎?並不是指分頁線本身,他們不是一體的嗎?
作者: linshin1999    時間: 2011-1-3 13:14

Hsieh版主謝謝,我找到了解決方案了:
Sub 自動分頁
    Dim rows_count As Long
    Dim page_count As Long
    Dim i As Long
    Dim row_index As Long
    Dim str_row_index As String
    Dim first_row As Long
   
    ActiveWindow.View = xlPageBreakPreview
    rows_count = Range("A1").CurrentRegion.Rows.Count
    first_row = 50
    For i = first_row To rows_count Step 50
        page_count = page_count + 1
        str_row_index = "A" + Trim(Str(i + 1))
        Set ActiveSheet.HPageBreaks(page_count).Location = Range(str_row_index)
    Next i
    ActiveWindow.View = xlNormalView
End Sub




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