2010-12-01 12 views
0

私はVBAの初心者です。単語VBA「ラベルが定義されていません」ブックマークが存在する場合コマンド

1)ブックマークにリンクしているテキストとコンボボックス付きの作業用フォームを作成しました 2)ブックマークが存在しない場合は問題が発生します。すべてのブックマークが存在しないドキュメントでフォームを実行する必要があります) 3)ブックマークが存在しない場合はフォームにエラーメッセージを表示し、その特定のドキュメントに存在するものを記入してください。 4)ここにコード:

Private Sub cmdOK_Click() 
    Application.ScreenUpdating = False 
    With ActiveDocument 
      If .Bookmarks.Exists("cboYourName") Then 
     .Range.Text = cboYourName.Value 
     Else: GoTo 28 
    End If 
     If .Bookmarks.Exists("cboYourPhone") Then 
     .Range.Text = cboYourPhone.Value 
     Else: GoTo 32 
    End If 
     If .Bookmarks.Exists("cboYourFax") Then 
     .Range.Text = cboYourFax.Value 
     Else: GoTo 36 
    End If 
     If .Bookmarks.Exists("cboYourEmail") Then 
     .Range.Text = cboYourEmail.Value 
     Else: GoTo 40 
    End If 
     If .Bookmarks.Exists("txtContractName") Then 
     .Range.Text = txtContractName.Value 
     Else: GoTo 44 
    End If 
      If .Bookmarks.Exists("txtContractNumber") Then 
      .Range.Text = txtContractNumber.Value 
      Else: End 
    End If 
    End With 
    Application.ScreenUpdating = True 
    Unload Me 
End Sub 

4)これを動作させるにはどうすればよいですか?

答えて

0

あなたは近いと思います。まず、Goto文を避けてください。あなたのコードでは、あなたがすることを意味することを伝えるのは難しいです。私はエラーがGotoステートメントから来たと思います。そのパラメータは行番号ではなくラベルです。次に、Endを使用しないでください。それは閉鎖ルーチンを持っている方が良いです。つまり、コードは任意の数のExistsステートメントで動作します。

Private Sub cmdOK_Click() 
    Application.ScreenUpdating = False 
    With ActiveDocument 
     If .Bookmarks.Exists("cboYourName") Then 
      .Range.Text = "cboYourName text." 
     Else 
      Debug.Print "Bookmark exists." 
     End If 

     If .Bookmarks.Exists("cboYourPhone") Then 
      .Range.Text = "cboYourPhone text" 
     Else 
      Debug.Print "Bookmark does not exists." 
     End If 
    End With 

    Application.ScreenUpdating = True 
    Unload Me 
End Sub 

ただし、見つかった各ブックマークは、後で見つかったブックマークを含め、ドキュメントの内容を完全に置き換えることに注意してください。それはあなたがすることを意味しますか?

関連する問題