2015-07-10 21 views
-1

我有一個包含多個Y/N複選框的文檔。文檔的某些區域,當選中Y時,我希望複選框字體更改顏色和粗體。我希望在檢查N時發生這種情況。使用vba打勾時修改複選框字體

我遇到的問題是

  • 我無法弄清楚如何使字體加粗,我能做到的顏色變化。
  • 當用戶點擊任何複選框時,會彈出一個對話窗口,顯示「UpdateForm」
    用戶必須單擊「確定」。
    然後另一個彈出「UpdateForm」和「Finished」。
    用戶再次點擊「確定」。

這裏是我的代碼:

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 

回答

0

爲了擺脫消息框刪除這些行:

MsgBox "Finished", vbOKOnly, "Update Form" 

MsgBox "Finished", vbOKOnly, "Reset Form" 

MsgBox "UpdateForm" 

爲了使加粗字體使用:

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

@ mielk - 比k你的幫助,但現在我得到一個編譯錯誤,「無效或不合格的參考」這是我的方式: ActiveDocument.Bookmarks(「Check01Txt」)。Range.Font.Color = RGB(102,153 ,0) .Font.Bold =真 否則 ActiveDocument.Bookmarks( 「Check01Txt」)。Range.Font.Color = RGB(0,0,0) 結束如果 是這樣嗎,用「字體。大膽=真「在下面的線上? – Carrie