我在工作中使用VBA創建文檔(因爲這是我可以在工作中使用的唯一東西)。設置後,我的變量返回一個空字符串。我試圖從一個方法帽傳遞數據給用戶窗體,這個方法帽是在運行時動態生成的。公共變量返回空字符串
我設置變量,像這樣在內的ThisDocument模塊的頂部
Public theName As String
然後我運行此當複選框被選中
With tblNew
'.Cell(Row:=rowCount, Column:=2).Merge MergeTo:=.Cell(Row:=rowCount, Column:=3)
.Rows(rowCount).SetHeight RowHeight:=InchesToPoints(0.35), HeightRule:=wdRowHeightExactly
.Cell(Row:=rowCount, Column:=1).SetWidth ColumnWidth:=InchesToPoints(0.75), RulerStyle:=wdAdjustNone
.Cell(Row:=rowCount, Column:=2).SetWidth ColumnWidth:=InchesToPoints(2.08), RulerStyle:=wdAdjustNone
.Cell(Row:=rowCount, Column:=3).SetWidth ColumnWidth:=InchesToPoints(1), RulerStyle:=wdAdjustNone
.Cell(Row:=rowCount, Column:=4).SetWidth ColumnWidth:=InchesToPoints(2), RulerStyle:=wdAdjustNone
.Cell(Row:=rowCount, Column:=5).SetWidth ColumnWidth:=InchesToPoints(1.85), RulerStyle:=wdAdjustNone
.Cell(rowCount, 1).Range.InsertAfter "Name:"
.Cell(rowCount, 3).Range.InsertAfter "Type:"
.Cell(rowCount, 2).Range.InlineShapes.AddOLEControl ClassType:="Forms.TextBox.1"
Set myCB = .Cell(rowCount, 4).Range.InlineShapes.AddOLEControl(ClassType:="Forms.TextBox.1")
Dim uofCode As String
Dim doc As Word.Document
Set doc = ActiveDocument
theName = myCB.OLEFormat.Object.Name
MsgBox theName ‘this message works fine
uofCode = "Private Sub " & myCB.OLEFormat.Object.Name & "_GotFocus()" & vbCrLf & _
vbCr & "Load uofForm" & vbCr & "uofForm.Tag = theName" & vbCr & "uofForm.Show" & vbCr & vbCrLf & _
"End Sub"
doc.VBProject.VBComponents("ThisDocument").CodeModule.AddFromString uofCode
End With
我設置變量theName
與此線theName = myCB.OLEFormat.Object.Name
和確保它設置爲使用MsgBox進行測試MsgBox theName
此消息正常工作。現在問題是當它生成變量爲空的函數時。任何想法爲什麼變量theName
沒有設置?
我有一種感覺,你的'&「uofForm.Tag = theName」&'只是一種複雜的方式來實現'&「uofForm.Tag =」「」&myCB.OLEFormat.Object.Name&「」「」 &'。 (我的猜測是爲什麼你的變量沒有保持設置是因爲代碼重置變量的一些變化,所以你的代碼添加可能是原因,你可以嘗試在你後面移動'theName = myCB.OLEFormat.Object.Name'行更新代碼並查看會發生什麼。) – YowE3K