使用vba勾选时修改复选框字体

时间:2015-07-10 13:13:47

标签: vba

我有一个包含多个Y / N复选框的文档。文档的某些区域,当选中Y时,我希望复选框字体更改颜色和粗体。我想要在检查N时发生这种情况。

我遇到的问题是

  • 我无法弄清楚如何使字体变粗,我只能做换色。
  • 当用户点击任意一个复选框时,弹出一个对话窗口,说“UpdateForm”
    用户必须单击“确定”。
    然后弹出另一个显示“UpdateForm”和“已完成”的窗口“。
    再次,用户必须单击”确定“。

这是我的代码:

Public Sub UpdateForm()
    On Error GoTo ERRUpdateForm
    Dim FF As Long
    Dim BM As Long
    Dim strFF As String
    Dim BolCheck As Boolean

    Dim ctl As FormField
    MsgBox "UpdateForm"
    ActiveDocument.Unprotect "password"

    For FF = 1 To ActiveDocument.FormFields.Count
        strFF = ActiveDocument.FormFields(FF).Name
            BolCheck = ActiveDocument.FormFields(FF).CheckBox.Value

            Select Case strFF
                'Page 2
                Case "Check01Y"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check01Txt").Range.Font.Color = RGB(102, 153, 0)
                    Else
                        ActiveDocument.Bookmarks("Check01Txt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check02Y"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check02Txt").Range.Font.Color = RGB(102, 153, 0)
                    Else
                        ActiveDocument.Bookmarks("Check02Txt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check03Y"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check03Txt").Range.Font.Color = RGB(102, 153, 0)
                    Else
                        ActiveDocument.Bookmarks("Check03Txt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check04Y"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check04Txt").Range.Font.Color = RGB(102, 153, 0)
                    Else
                        ActiveDocument.Bookmarks("Check04Txt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                'Rest of document
                Case "Check05N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check05NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check05NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check06N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check06NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check06NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check07N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check07NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check07NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check08N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check08NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check08NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check09N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check09NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check09NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check10N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check10NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check10NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check11N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check11NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check11NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check12N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check12NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check12NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check13N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check13NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check13NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check14N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check14NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check14NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check15N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check15NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check15NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check16N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check16NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check16NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check17N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check17NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check17NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check18N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check18NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check18NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check19N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check19NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check19NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check20N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check20NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check20NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check21N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check21NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check21NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
                Case "Check22N"
                    If BolCheck Then
                        ActiveDocument.Bookmarks("Check22NTxt").Range.Font.Color = RGB(255, 0, 0)
                    Else
                        ActiveDocument.Bookmarks("Check22NTxt").Range.Font.Color = RGB(0, 0, 0)
                    End If
            End Select
    Next FF

    If ActiveDocument.ProtectionType = wdNoProtection Then
        ActiveDocument.Protect _
        Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="password"
    End If

    MsgBox "Finished", vbOKOnly, "Update Form"
    Exit Sub
ERRUpdateForm:
    Debug.Print "UpdateForm," & Err.Number & ","; Err.Description
    Resume Next
End Sub

Sub ResetForm()
    On Error GoTo ERRResetForm

    ActiveDocument.Unprotect "password"

    Dim BM As Bookmark
    For Each BM In ActiveDocument.Bookmarks
        If UCase(Right(BM.Name, 3)) = "TXT" Then
        BM.Range.Font.Color = RGB(0, 0, 0)
        End If
    Next BM

    If ActiveDocument.ProtectionType = wdNoProtection Then
        ActiveDocument.Protect _
        Type:=wdAllowOnlyFormFields, NoReset:=False, Password:="password"
    End If

    MsgBox "Finished", vbOKOnly, "Reset Form"
    Exit Sub
ERRResetForm:
    Debug.Print "ResetForm," & Err.Number & ","; Err.Description
    Resume Next
End Sub

1 个答案:

答案 0 :(得分:0)

为了摆脱消息框,删除这些行:

MsgBox "Finished", vbOKOnly, "Update Form"

MsgBox "Finished", vbOKOnly, "Reset Form"

MsgBox "UpdateForm"

为了使用粗体字体:

ActiveDocument.Bookmarks("Check01Txt").Range.Font.Bold = True