0

発行者ドキュメント用のマクロを開発しようとしています。このマクロを実行すると、ユーザーが 3 種類のクライアントのいずれかを選択できるポップアップが表示され、選択したオプションに応じてテキスト ボックスに異なる箇条書きが追加されます。同じソースから来ていると思われる 2 つの異なる問題が発生しています。一番の問題は、ユーザー フォームのボタンがクリックされたときに別のマクロを実行することができないことです。問題 2 は、ツールバーの 1 つにマクロを追加したのに、マクロをクリックしても何も起こらないことです。どちらの場合も、マクロを実行していないだけです。私は何を間違っていますか?

ユーザーフォーム1

Private Sub CommandButton1_Click()
Application.Run ("ShapeTest")
End Sub

Private Sub UserForm_Initialize()
With ListBox1
.AddItem ("Federal")
.AddItem ("State")
.AddItem ("Local")
End With
End Sub

このドキュメント

Private Sub GenerateStatement()
UserForm1.Show
End Sub

Private Sub ShapeTest()
MsgBox ("Hello!")
Application.ActiveDocument.Pages(1).Shapes(1).TextFrame.TextRange.InsertAfter`enter code here`(Chr(13) & "My Text")
End Sub
4

1 に答える 1

1

Application.Run("ShapeTest")単にではなく、なぜ使用しているのですShapeTestか?

100% 確信できるほどの情報はありませんが、次のようにすればうまくShapeTestいくはずです: ユーザーフォームから呼び出し可能にするには、次の 2 つのことを行います。

1) からThisDocument一般的なコード モジュールに移動します (最初Insert/Moduleにエディターで)。

Private2) の前の単語を削除しSub ShapeTest()ます --モジュールの外部のコードで使用できるようにするため、これをプライベート サブサブにしたくありません。

編集時: または -のShapeTest()場所を保持し、修飾子をThisDocument取り除き、ユーザーフォームコードでasを参照することもできます。私は最初の方法を使用することを好みます。なぜなら、一般的なコード モジュールにできるだけ多くのコードを保持する傾向があるためです (イベント ハンドラー用などを予約します)が、私の VBA の経験はほとんどが Excel で、Word が少しあり、保持する理由があるかもしれません。Publisherのコード。Publisher はわかりませんが、Word でときどき遭遇する問題は、文書のプロジェクトに入れたいコードを誤ってテンプレートに入れてしまうことがあるということです。パブリッシャーで同様のことが可能である場合は、コードがどこにあるかを再確認する必要があります。PrivateShapeTestThisDocument.ShapeTestThisDocumentThisDocumentNormal

于 2015-07-30T12:40:13.240 に答える