-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
@ 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