1

我正在使用 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集合计数会增加,该字段会出现在文档中,但函数返回的引用是针对第一个字段的(人员角色下拉列表)

文档说明返回值是(应该是)对FormField添加到集合中的对象的引用:

MS-Word VBA 文档片段

返回的引用不正确,因为在代码完成后,第一个下拉字段name添加了最后一个字段,看起来像这样

在此处输入图像描述

我做错了什么还是有办法解决这个“错误”?

4

1 回答 1

2

不幸的是,在插入 FormField 之前,您必须确保范围不包括单元格结束范围标记。

例如

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)
于 2013-07-18T17:26:45.413 回答