如何比较vba word中两个FormFields的引用相等性?
我有一个ListView,它表示word文档中的所有FormFields,就像目录一样如何比较vba word中两个FormFields的引用相等性?,vba,ms-word,Vba,Ms Word,我有一个ListView,它表示word文档中的所有FormFields,就像目录一样 Function addFields(field As formField) Set oApp = GetObject(, "Word.Application") oApp.Visible = True Set oDoc = oApp.ActiveDocument Dim dFormField As formField Dim i As Integer For
Function addFields(field As formField)
Set oApp = GetObject(, "Word.Application")
oApp.Visible = True
Set oDoc = oApp.ActiveDocument
Dim dFormField As formField
Dim i As Integer
For i = 1 To oDoc.FormFields().Count
Set dFormField = oDoc.FormFields(i)
If (dFormField Is field) Then
Set Item = NavigatorForm.LBFields.ListItems.Add(i, , i)
Set Item.tag = dFormField
Exit For
End If
Next
End Function
如何比较要添加的FormField是否位于对象模型中的某个索引处,并将其插入列表中的正确位置
If (dFormField Is field) Then
是在vba中比较对象引用相等性的方式,但DOM似乎每次都在创建一个新的formfield对象。因此,要么我犯了一个错误,要么我需要一些其他方法来确定它们是否是相同的formfield片段
我会使用自动生成的书签文本,但由于复制和粘贴不会更新书签名称,因此不能指望它没有空文本或副本。这是我的黑客解决方案。我将奖励一个更好的答案
Function addFields(field As formField)
Dim orig As String
Dim detect As String
orig = field.Result
field.Result = Rnd(100000)
Set oApp = GetObject(, "Word.Application")
oApp.Visible = True
Set oDoc = oApp.ActiveDocument
Dim dFormField As formField
Dim i As Integer
For i = 1 To oDoc.FormFields().Count
Set dFormField = oDoc.FormFields(i)
If (dFormField.Result = field.Result) Then
field.Result = orig
Set Item = NavigatorForm.LBFields.ListItems.Add(i, , i)
Set Item.tag = dFormField
Exit For
End If
Next
End Function