2014-02-28 37 views
1

我使用Excel 2007中下面的代碼:錯誤設置時Worksheet.PageSetup.XxxFooter

Dim ws As Worksheet, lf As String, cf As String, rf As String 
... 
rf = "&""-,Italic""&K7F7F7F" & "Some text" 
... 
ws.PageSetup.LeftFooter = lf 
ws.PageSetup.CenterFooter = cf 
ws.PageSetup.RightFooter = rf 

我上最後一行出現以下錯誤。

Run-time error '1004': Unable to set the RightFooter property of the PageSetup class 

LeftFooterCenterFooter屬性被置就好了。但是,如果我更改了屬性的設置順序,那麼最後一個,即LeftFooterCenterFooter會觸發錯誤,並且前兩個總是成功設置。所以這告訴我這不是頁腳或任何語法的錯誤。

請注意,我將三種頁腳部分中的一些字體設置爲斜體並使用不同的顏色。如果我刪除了有關更改爲斜體和顏色的部分(僅在頁腳部分的最後一個部分),那麼它將無誤地執行。
編輯此外,如果我只刪除斜體部分,那麼代碼將執行沒有錯誤。 /編輯

我最初得到這個錯誤,然後玩弄變量和連接,直到最終它的工作,但現在它再次打破,我不知道這個問題。

This question似乎可能有關,但我不確定。我試過修復那個人的工作(使用Replace,除了返回一個新的字符串外,其他什麼也不做),但是我仍然得到相同的錯誤。

我不使用串聯設置lfcf和​​,合併的變量,和很多其他的東西(在絕望中),不應該有效果反正嘗試過了,我不斷收到此錯誤。有誰知道這個問題會是什麼?

UPDATE
我從來沒有發現一個回答我的問題,所以我只是刪除了斜體字體樣式,其餘的在工作。我很開心。但是,現在,我不得不爲橫向表創建頁眉和頁腳(另一個是縱向)。頁眉和頁腳與縱向工作表完全相同,但中心頁腳部分中的某些文本較長。其餘的完全相同。創建頁腳的整個過程被複制,只有一段文本被更改。現在我得到了和以前一樣的錯誤(沒有斜體部分)。和以前一樣,它發生在最後一個頁腳部分。請注意,肖像頁腳仍然正常工作。這讓我感到瘋狂,而且我在你認爲相當簡單的事情上失去了寶貴的時間。

任何人都可以複製該錯誤?

下面是完整的代碼:

Private Const LINE_CLR As String = "&K538ED5" ' RGB(83, 142, 213) 
'Private Const TEXT_STYLE AS STRING = "&""-,Italic""" 
Private Const TEXT_STYLE As String = "" 
Private Const TEXT_CLR As String = "&K7F7F7F" ' RGB(127, 127, 127) 
Private Const FTR_INDENT_RT As String = "   " 
Private Const FTR_INDENT_LT As String = "   " 

' ***************************************************************************** 
Private Function HOR_LINE_PORTRAIT() As String 
    HOR_LINE_PORTRAIT = String(128, "_") 
End Function 

' ***************************************************************************** 
Private Function HOR_LINE_LANDSCAPE() As String 
    HOR_LINE_LANDSCAPE = String(191, "_") 
End Function 

' ***************************************************************************** 
Public Sub CreateFooter_Landscape(_ 
     ByRef ws As Worksheet, _ 
     ByVal txt1 As String, _ 
     ByVal txt2 As String, _ 
     ByVal txt3 As String) 
    Dim txtL As String, txtC As String, txtR As String 
    Dim lf As String, cf As String, rf As String ' left, center, and right footer 

    txtL = "Some text1: " & txt1 
    txtC = "Some text2: " & txt2 
    txtR = "Some text3 " & txt3 

    lf = TEXT_STYLE & TEXT_CLR & FTR_INDENT_LT & txtL 
    cf = LINE_CLR & HOR_LINE_LANDSCAPE & Chr(10) & TEXT_STYLE & TEXT_CLR & txtC 
    rf = TEXT_STYLE & TEXT_CLR & txtR & FTR_INDENT_RT 

    ws.PageSetup.LeftFooter = lf 
    ws.PageSetup.CenterFooter = cf 
    ws.PageSetup.RightFooter = rf 
End Sub 
+0

您是否在運行此代碼的計算機上安裝了打印機?如果是這樣,你有沒有嘗試將它改爲別的? –

+0

@RichardMorgan,是的,我確實安裝了(物理)打印機,但我的默認打印機是PDF打印機。我應該改變它嗎? – neizan

+0

我不確定。過去,我在設置PageSetup屬性時遇到了沒有打印機和「虛擬」打印機的問題。另外,看看這個答案是否有幫助:http://stackoverflow.com/questions/18601744/excel-headers-footers-wont-change-via-vba-unless-blank –

回答

0

我還沒有對此有明確的答案,但在我的考驗,我注意到了一些東西(以上所有通過VBA設置頁眉和頁腳是非常古怪):

  1. 我在中心具有頁腳部分的水平條(在下劃線的字符串的形式),其跨越整個頁面寬度。我注意到,如果我大大減少了錯誤消失的寬度。但是,欄需要跨越整個頁面寬度,所以這不是一個可接受的解決方案,只是一個觀察

  2. 我有一個單獨的過程來設置頁眉和頁腳頁。我通過過程的參數傳遞了頁腳的文本。但是,我注意到,如果我將其他所有內容都保留在相同的位置,並且只是將參數變量(在連接文本時)用硬編碼值覆蓋錯誤消失。同樣,這不是一個選項,因爲該值不能被硬編碼。

  3. 此外,在連接字符串時,我直接調用函數(返回String)。但是,如果我用局部變量替換函數調用,則錯誤消失。我確實做了這個改變,但由於其他因素,我仍然得到錯誤。

我會嘗試更新這個答案,如果我找到其他任何東西,或幸運的「真實」的答案。

UPDATE
我結束了從下劃線只是轉換了單槓的圖像,我得到它的工作。所以我猜中間部分的下劃線,但重疊左側和右側部分導致某種問題。我還沒有嘗試添加斜體樣式,我認爲我不會。它工作,我花了太多時間在這方面。