我正在使用Word 2010创建电子表单,但Add
集合的FormField
方法中似乎存在错误;我想知道是否有办法绕过它。
在表格中,我有一张表,询问有关工作人员的信息,这可以通过按下按钮添加其他行。代码向表中添加一个新行,然后遍历创建表单字段的新行中的每个单元格。
Private Sub AddStaffRow(t As Table)
Dim rowNum As Integer
Dim ff As FormField
' Add a new row
t.Rows.Add
rowNum = t.Rows.Count
' Insert form fields in to the cells
' Staff role dropdown
Set ff = ActiveDocument.FormFields.Add(t.Cell(rowNum, 1).Range, wdFieldFormDropDown)
ff.Name = "staff_role" & rowNum
With ff.DropDown.ListEntries
.Add "Principle Investigator"
.Add "Sub Investigator"
.Add "Research Nurse"
.Add "Practice Nurse"
.Add "Administrator"
End With
' Staff name textbox
Set ff = ActiveDocument.FormFields.Add(t.Cell(rowNum, 2).Range, wdFieldFormTextInput)
ff.Name = "staff_name" & rowNum
' GCP certificate available
Set ff = ActiveDocument.FormFields.Add(t.Cell(rowNum, 3).Range, wdFieldFormDropDown)
ff.Name = "staff_gcp" & rowNum
With ff.DropDown.ListEntries
.Add "Yes"
.Add "No"
.Add "NA"
End With
End Sub
添加的第一个字段正常工作,创建下拉列表并使用添加的选项命名。但是,当添加下一个字段FormField
集合计数增量时,该字段将显示在文档中,但该函数返回的引用是第一个字段(人员角色下拉列表)
documentation states返回值是(应该是)对添加到集合中的FormField
对象的引用:
返回的引用不正确,因为代码完成后,第一个下拉字段中添加了最后一个字段的name
,看起来像这样
我做错了什么或者是否有解决这个“错误”的方法?
答案 0 :(得分:2)
不幸的是,在插入FormField之前,您必须确保该范围不包含单元格结束范围标记。
e.g。
Dim r As Word.Range
Set r = t.Cell(rowNum,1).Range
r.SetRange r.Start, r.End-1
Set ff = ActiveDocument.FormFields.Add(r, wdFieldFormDropDown)