2013-07-18 1 views
1

Word 2010을 사용하여 전자 양식을 만들었지 만 FormField 컬렉션의 Add 메서드에 버그가있는 것 같습니다. 나는 주변에 방법이 있는지 알고 싶다.FormField.Add 메서드가 새 필드에 대한 참조를 반환하지 않습니다. (버그?)

양식에 직원이 있는지 묻는 테이블이있어서 단추를 눌러 추가 행을 추가 할 수 있습니다. 이 코드는 테이블에 새 행을 추가 한 다음 양식 필드를 만드는 새 행의 각 셀로 이동합니다.

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 객체에 대한 참조가 컬렉션에 추가 :

MS-Word VBA documentation snippet

코드 후이 제 드롭 필드 마지막 필드 name을 가지고 완료했기 때문에 반환 참조가 잘못 첨가 화장실 이

enter image description here

같은 KS 내가 뭔가 잘못하고 있는가 또는이이 "버그"주위에 방법이 있나요?

답변

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) 
+0

솔루션이 작동합니다. 그러나 셀 끝 마커를 선택하지 않아야하는 이유를 설명 할 수 있습니까? 나는 여전히 이것이 버그라고 생각하지만 어딘가에 문서화되어 있다면 잘못된 것으로 입증되기를 바란다. – Tony

+1

> '설명 할 수 있습니까?'아니요. 단, 마커의 마지막 마커와 같은 방법으로 셀 끝 마커를 바꿀 수는 없습니다. 따라서 셀 끝 마커가 포함 된 범위의 내용을 수정하려고하면 문제가 발생할 수 있습니다. 곤충? 워드 레인지 객체를 불필요하게 다루기 힘든 디자인의 매우 열등한 조각이라고 설명 할 것입니다. 아마 Word에서 다시 생각하기보다는 Excel의 Range에서 변형 된 것입니다. FWIW, 나는 사고와 같은 소리를 내고, 때로는 인간의 실수로 회피 할 수없는 결과를 낳을 수 있다는 원칙에 대해 "버그"라고 묘사하는 경우는 드뭅니다 .- –

+0

사후 고려 사항으로, 나는 적어도 "버그"라고 생각합니다. 객체 모델은 그 시나리오에서 이상적으로 예외를 발생시킵니다. –

관련 문제