我在Excel中有一些vba代碼來自動化Visio,我必須創建多個文本框。我現在做的是這樣的:創建函數以避免代碼重複
Set textbox1 = vsoDocument.Pages(PageName).DrawRectangle(1,1,1,3)
textbox1.LineStyle = "Text Only"
textbox1.FillStyle = "Text Only"
textbox1.CellsSRC(visSectionParagraph, 0, visHorzAlign).FormulaU = "0" 'Align Left
textbox1.CellsSRC(visSectionCharacter, 0, visCharacterSize).FormulaU = "6 pt"
textbox1.Characters.Text = "Text goes here"
textbox1.Characters.CharProps(visCharacterStyle) = 17#
但是我想這個移動功能,但我仍然需要有框能夠通過名稱來引用,我就可以在以後執行其他任務腳本。我試圖做一個函數來執行此:
Function AddTextBox(vName, x1, y1, x2, y2, align, tSize, textchar)
Set vName = vsoDocument.Pages(PageName).DrawRectangle(x1, y1, x2, y2)
vName.LineStyle = "Text Only"
vName.FillStyle = "Text Only"
vName.CellsSRC(visSectionParagraph, 0, visHorzAlign).FormulaU = align
vName.CellsSRC(visSectionCharacter, 0, visCharacterSize).FormulaU = tSize
vName.Characters.Text = textchar
End Function
並把它稱爲是這樣的:
test = AddTextBox("textbox1", 1, 1, 1, 3, 0, "6 pt", "Text goes here")
但是我得到424錯誤的「所需的對象」。我讀過的任何VBA函數似乎都被用來返回一個值,而不是用於避免重複代碼。
是否可以簡化我的代碼並防止用這種方法重複自己?
是'vsoDocument'一個全局變量? – Comintern
否; vsoDocument的尺寸在Sub中。我通過將其導入到函數來解決此問題。 – fileinster