我在 Excel 中有一個宏,它創建了一個 Word,其中復制了一些 Excel 表格,并且我有這個用于更改格式的代碼:
Set WordTable = myDoc.Tables(i)
With WordTable
.AutoFitBehavior (wdAutoFitWindow)
.Shading.Texture = wdTextureNone
.Shading.BackgroundPatternColor = wdColorWhite
.Range.Font.TextColor = wdColorBlack
.Range.ParagraphFormat.SpaceAfter = 0
End With
除非未設定參考“Microsoft Word 物件庫”,否則一切正常。在這種情況下,由于某種原因,陰影會變黑。除了設定此參考之外,有什么方法可以解決它?
問題是這個宏是用戶安裝在他們自己的 PC 上的更大 Excel 程式的一部分,因此不應該能夠使用 VBA。
uj5u.com熱心網友回復:
問題是,如果您在 Excel 中使用該代碼并且未設定“Microsoft Word 物件庫”,則 Excel 不知道 Word 常量wdAutoFitWindow
、wdTextureNone
和. 相反,Excel 會將它們視為變數,并且由于您沒有初始化它們,因此它們中的每一個都具有 value 。wdColorWhite
wdColorBlack
0
確保您使用Option Explicit
,以便在您使用未定義的內容時收到通知!
我建議始終激活
Option Explicit
:
在 VBA 編輯器中轉到工具?選項?需要變數宣告。
要解決此問題,您需要將它們替換為實際值(您可以在此處找到列舉的值:Enumerations (Word))或將它們定義為 Excel 中的常量。
Option Explicit
Public Sub Example
Const wdAutoFitWindow As Long = 1
Const wdTextureNone As Long = 0
Const wdColorWhite As Long = 16777215
Const wdColorBlack As Long = 0
Set WordTable = myDoc.Tables(i)
With WordTable
.AutoFitBehavior wdAutoFitWindow
.Shading.Texture = wdTextureNone
.Shading.BackgroundPatternColor = wdColorWhite
.Range.Font.TextColor = wdColorBlack
.Range.ParagraphFormat.SpaceAfter = 0
End With
End Sub
如果您計劃在多個程序/函式中使用它們,您也可以在程序范圍之外定義它們。確保Option Explicit
在每個模塊之上使用以確保正確宣告所有變數,否則您將很快再次遇到問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/488218.html
下一篇:Excel查找并保留字符后的文本