2017-07-07 7 views
0

私はこのウェブサイトの人々の助けを借りていくつかのコードをまとめました。私はちょっとした問題にぶち当たった - Call UpdateBookmark関数を使って以前に入力した情報をword文書に置き換え、これを私の既存のコードに実装する際の問題がある。ブールコードアシスタントとしてUpdateBookmark&Booleanを使用してください。

Private Sub cmdOk_Click() 
    Dim useAforB As Boolean 
    useAforB = CheckBox1.Value 

    Application.ScreenUpdating = False 
    With ActiveDocument 
     Call UpdateBookmark("Lodge", ComboBoxLodge.Value) 
     Call UpdateBookmark("Form", tbForm.Value) 
     Call UpdateBookmark("Form2", tbForm.Value) 
     Call UpdateBookmark("AGN", tbGN.Value) 
     Call UpdateBookmark("AFN", tbFN.Value) 
     Call UpdateBookmark("LGN", useAforB, _ 
            tbGN.Value, TBLPGN.Value) 
     Call UpdateBookmark("RGN", useAforB, _ 
            tbGN.Value, TBLPGN.Value) 
     Call UpdateBookmark("LFN", useAforB, _ 
            tbFN.Value, TBLPFN.Value) 
     Call UpdateBookmark("RFN", useAforB, _ 
            tbFN.Value, TBLPFN.Value) 
     Call UpdateBookmark("DOB", tbDOB.Value) 
     Call UpdateBookmark("LT", cbLT.Value) 
     Call UpdateBookmark("PN", tbPN.Value) 
     Call UpdateBookmark("PN2", tbPN.Value) 
     Call UpdateBookmark("PN3", tbPN.Value) 
     Call UpdateBookmark("PN4", tbPN.Value) 
     Call UpdateBookmark("Issued", tbissue.Value) 
     Call UpdateBookmark("Expiry", tbexpiry.Value) 
     Call UpdateBookmark("LTD", tbLTD.Value) 
     Call UpdateBookmark("LTD2", tbLTD.Value) 
     Call UpdateBookmark("Narrative", tbNarrative.Value) 
     Call UpdateBookmark("PRR", tbPRR.Value) 
     Call UpdateBookmark("Recommendation", cbRecommendation.Value) 
    End With 
    Application.ScreenUpdating = True 
    Unload Me 
End Sub 


Sub UpdateBookmark(BookmarkToUpdate As String, TextAtBookmark As String) 
    Dim BookmarkRange As Range 
    Set BookmarkRange = ActiveDocument.Bookmarks(BookmarkToUpdate).Range 
    BookmarkRange.Text = TextAtBookmark 
    ActiveDocument.Bookmarks.Add BookmarkToUpdate, BookmarkRange 

End Sub 

I取得私は、コードを実行しようとするたびにCompile error: ByRef argument type mismatchを読み込みエラー - 誰もが私にいくつかの援助を与えることができます?みんなありがとう。

コード全体を明確にするため

Option Explicit 
Private Sub CheckBox1_Click() 
    Dim en As Boolean 
    en = Not CheckBox1.Value 
    EnableControls Array(TBLPGN, TBLPFN), en 

    If CheckBox1.Value = True Then ComboBoxLodge.Value = "Applicant" 
    If CheckBox1.Value = False Then ComboBoxLodge.Value = "Lodging parent" 

End Sub 


'utility sub: enable/disable controls 
Private Sub EnableControls(cons, bEnable As Boolean) 
    Dim con 
    For Each con In cons 
     With con 
      .Enabled = bEnable 
      .BackColor = IIf(bEnable, vbWhite, RGB(200, 200, 200)) 
     End With 
    Next con 
End Sub 
Private Sub cmdCancel_Click() 
    Unload Me 
End Sub 

Private Sub cmdClear_Click() 
tbForm.Value = Null 
tbFN.Value = Null 
tbGN.Value = Null 
tbdob.Value = Null 
cbLT.Value = Null 
tbPN.Value = Null 
tbissue.Value = Null 
tbexpiry.Value = Null 
tbLTD.Value = Null 
tbNarrative.Value = Null 
tbPRR.Value = Null 
cbRecommendation.Value = Null 
CheckBox1.Value = False 
ComboBoxLodge.Value = Null 
End Sub 

Private Sub cmdOk_Click() 
    Dim useAforB As Boolean 
    useAforB = CheckBox1.Value 

    Application.ScreenUpdating = False 
    With ActiveDocument 
     Call UpdateBookmark("Lodge", ComboBoxLodge.Value) 
     Call UpdateBookmark("Form", tbForm.Value) 
     Call UpdateBookmark("Form2", tbForm.Value) 
     Call UpdateBookmark("AGN", tbGN.Value) 
     Call UpdateBookmark("AFN", tbFN.Value) 
     Call UpdateBookmark("LGN" useAforB _ 
            tbGN.Value, TBLPGN.Value) 
     Call UpdateBookmark("RGN", useAforB, _ 
            tbGN.Value, TBLPGN.Value) 
     Call UpdateBookmark("LFN", useAforB, _ 
            tbFN.Value, TBLPFN.Value) 
     Call UpdateBookmark("RFN", useAforB, _ 
            tbFN.Value, TBLPFN.Value) 
     Call UpdateBookmark("DOB", tbdob.Value) 
     Call UpdateBookmark("LT", cbLT.Value) 
     Call UpdateBookmark("PN", tbPN.Value) 
     Call UpdateBookmark("PN2", tbPN.Value) 
     Call UpdateBookmark("PN3", tbPN.Value) 
     Call UpdateBookmark("PN4", tbPN.Value) 
     Call UpdateBookmark("Issued", tbissue.Value) 
     Call UpdateBookmark("Expiry", tbexpiry.Value) 
     Call UpdateBookmark("LTD", tbLTD.Value) 
     Call UpdateBookmark("LTD2", tbLTD.Value) 
     Call UpdateBookmark("Narrative", tbNarrative.Value) 
     Call UpdateBookmark("PRR", tbPRR.Value) 
     Call UpdateBookmark("Recommendation", cbRecommendation.Value) 
    End With 
    Application.ScreenUpdating = True 
    Unload Me 
End Sub 


Sub UpdateBookmark(BookmarkToUpdate As String, TextAtBookmark As String) 
    Dim BookmarkRange As Range 
    Set BookmarkRange = ActiveDocument.Bookmarks(BookmarkToUpdate).Range 
    BookmarkRange.Text = TextAtBookmark 
    ActiveDocument.Bookmarks.Add BookmarkToUpdate, BookmarkRange 

End Sub 

Private Sub Tbform_Change() 
    tbForm = UCase(tbForm) 
End Sub 


Private Sub Tbpn_Change() 
    tbPN = UCase(tbPN) 
End Sub 


Private Sub tbPRR_Change() 
    tbPRR = UCase(tbPRR) 
End Sub 

Private Sub UserForm_Initialize() 
    With cbLT 
     .AddItem "lost" 
     .AddItem "stolen" 
    End With 
    With cbRecommendation 
     .AddItem "I believe there is an entitlement to have the l/t flag turned off as the applicant has not contributed to the loss of Passport number: " 
     .AddItem "I believe there is no entitlement to have the l/t flag turned off as the applicant has contributed to the loss of Passport number: " 
    End With 
    With ComboBoxLodge 
     .AddItem "Lodging parent" 
     .AddItem "Applicant" 
    End With 
    With CheckBox1 
     CheckBox1.Value = True 
    End With 
lbl_Exit: 
    Exit Sub 
End Sub 
+0

'UpdateBookmark'は2つの文字列型引数を必要としますが、場合によっては4つの引数を渡しているので、意図が何であるかは不明です。 'Call UpdateBookmark(" LGN "、IIf(useAforB、 tbGN.Value、TBLPGN.Value))'を呼び出すようなものを意味しましたか? –

+0

ちょっと@TimWilliams、あなたのコードを試してみて、それは完全に修正しました - あなたは伝説です(私はあなたの答えを選ぶことができるので、答えとしてそれを置いて欲しいですか?) –

答えて

1

を追加しましたあなたのサブUpdateBookmarkは、2つの文字列型の引数を期待しますが、いくつかのケースでは次の4つの引数を渡している:それは意図がそこにあるものは明らかではありません。

あなたは

Call UpdateBookmark("LGN", IIf(useAforB, tbGN.Value, TBLPGN.Value)) 

のようなものを意味しましたか?

+0

完璧です、援助:) –

関連する問題