這是我第一次嘗試爲Word編寫VBA腳本(我是一名前程序員,擁有合理的自學成功能力Excel VBA)。我使用Word 2013(15.0.4641.1001 64位)和VBA 7.1 .142。當使用「步入」或「運行」啓動Word VBA腳本時,其行爲會有所不同
我想執行一個簡單的任務,即在當前光標位置(本身可以在另一個表內)創建一個兩列表。我希望表格是可用寬度的100%,然後我想修正第一列的寬度。本質上,我的代碼做我想做的事(對於第一次嘗試,我對它很滿意),但它不穩定。
問題與寬度有關。如果我將光標定位並「插入」宏,它通常(90%+的時間)做我想要的。如果我「運行」它,它永遠不會正常工作。
我的代碼如下。它應該做的是這樣的: -
- 創建一個表5行x 2列,即它的位置的全部寬度。
- 將第一列設爲固定寬度(接受簡短的固定格式字符串)
- 按順序爲每行編號並右對齊文本。
- 將第2列分爲兩行,每個原始行。
問題與行動「2」,其他工作正常。
- 如果表是全文檔寬度,行動「2」,在「走進」似乎總是正常工作,但是
- 當它是「運行」,行動「2」始終使失敗第一列50%寬。
- 如果我手動創建1行×2列的表格,然後「步入」宏在其兩個單元以創建一個子表:
- 動作「2」爲第一子 - 表工作正常,但
- 對於第二個子表,操作「2」通常將第一列設置爲50%而不是固定寬度
- 有時,操作「2」將整個子表設置爲50%其父區的寬度,並將其列設置爲其自身寬度的50%
有一兩件事我注意到的是,在執行時,該命令
.Columns(1).PreferredWidth = 15
似乎採取noticably長於其他命令。
正如我所說,這是我的第一次努力,我還不知道是否已經忽略了某個參數。
如果有人能解釋我要出錯的地方以及如何解決問題,我將不勝感激。
乾杯
巴茲
這裏是我的代碼。
Sub CreateTable()
AddRows = 5
Set NewTable = ActiveDocument.Tables.Add(Selection.Range, AddRows, 2)
With NewTable
'Display cell borders
If .Style <> "Table Grid" Then
.Style = "Table Grid"
End If
'Make table 100% wide
.PreferredWidthType = wdPreferredWidthPercent
.PreferredWidth = 100
'Make column 1 narrow
.PreferredWidthType = wdPreferredWidthPoints
.Columns(1).PreferredWidth = 15
.AutoFitBehavior (wdAutoFitFixed)
'Number each row
For a = 1 To AddRows
.Cell(a, 1).Range.InsertAfter a & ")"
.Cell(a, 1).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
Next a
'Split column 2
For a = 1 To (AddRows * 2) - 1 Step 2
.Cell(a, 2).Split NumRows:=2, NumColumns:=1
Next a
End With
End Sub
太棒了!我建議你繼續並「Aceept」這個答案。我相信你現在有足夠的代表在SO上進行聊天,這對於這個級別的問題解決可能有幫助。 – Smandoli 2014-09-23 15:37:59