1

所以我创建了一个表格,用户可以填写表格。他们选择一个按钮,将整个表单复制到剪贴板上。但是,如果他们没有填写某个部分,或者如果他们键入 NA,我希望表单禁用复制。目前,当表单执行此操作时,它仅在底部单元格上留下 NA 或空白答案时才有效。如何编辑范围以包含整个表格(单元格 1-15)?下面是我的代码。(编辑:修改为已回答,但是收到请求的成员不存在的错误。FormFields 从表的第 2 行开始。

Private Sub Contactcopy_Click()
' Contact Copy Macro
'Unprotect the file
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect Password:=""
End If
T = 1
For X = 2 To 15
Set r = ActiveDocument.Tables(2).Rows(X).Cells(1).Range.FormFields(1)
If ((r = "NA") Or (r = "")) Then
MsgBox "BLANK QUESTION OR NA ENTERED"
T = 0
Exit For
Else
With ActiveDocument
   Set myRange = .Range(.Tables(2).Rows(2).Cells(1).Range.Start, _
                 .Tables(2).Rows(15).Cells(1).Range.End)
   myRange.Select
   Selection.Copy
End With
End If
Next X
'Reprotect the document.
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=""
End If
End Sub
4

1 回答 1

2

尝试使用循环来测试细胞状况:

T=1
For x = 1 To 15
  Set R = ActiveDocument.Tables(2).Rows(x).Cells(1).Range.FormFields(1)
  If ((R = "NA") Or (R = "")) Then
    MsgBox "BLANK QUESTION OR NA ENTERED"
    T=0
    Exit For
  End If
Next x

如果 T=1,则可以使用以下结构进行选择:

With ActiveDocument
       Set myRange = .Range(.Tables(2).Rows(1).Cells(1).Range.Start, _
                     .Tables(2).Rows(15).Cells(1).Range.End)
       myRange.Select
       Selection.Copy
    End With
于 2013-05-01T01:21:38.627 回答