1

以前にこの質問をしましたが、十分に明確ではなかったと思います。

マクロの実行が開始された後にテキストを強調表示して選択し、新しい選択を処理するようにユーザーに求める Word VBA マクロを作成する必要があります。このプロセスは、マクロ内で不明な回数繰り返されます。

私が抱えている唯一の問題は、VBA マクロを「一時停止」させ、ユーザーがこの選択を行えるようにする方法を考え出すことです。誰かが AutoCAD VBA に精通している場合は、AcadSelectionSet.SelectOnScreenメソッドに相当するものを探しています。これは非常に明白で基本的なことのように思えますが、Microsoft のヘルプ ファイルやオンライン検索で、これを行う方法を示すものを見つけることができません。できれば助けてください!

4

2 に答える 2

1

あなたはおそらくオブジェクトのWindowSelectionChangeイベントを見ているべきですか?Application

特別なThisDocumentモジュールでは、次のようなコードが必要です。

Public WithEvents app As Application

Private Sub app_WindowSelectionChange(ByVal Sel As Selection)

MsgBox "The selection has changed"

End Sub

明らかに、MsgBoxを有用なコードに置き換え、Selパラメーターを使用して選択にアクセスします。他のイベントを試したい場合は、ThisDocumentモジュールの上部にあるドロップダウンを使用してください

設定するには、通常のコードモジュールで次のようなマクロが必要です。

Sub setUpApp()

Set ThisDocument.app = ThisDocument.Application

End Sub

setUpApp一度実行すると、app_WindowSelectionChange選択が変更されるたびにイベントがトリガーされます

于 2009-04-05T00:49:15.823 に答える
0

モードレスフォームを使用して、特定の条件が満たされるまでマクロを実行し続けることができます。

フォームデザイナー:

  • フォームを追加します。
  • ボタンを1つ追加します。
  • ラベルを1つ追加します。

フォームコード:

Option Explicit

Dim m_stopHere As Boolean
Dim m_timesDone As Long

Private Sub CommandButton1_Click()

    m_timesDone = m_timesDone + 1
    m_stopHere = Not DoStuff(m_timesDone)

    Me.Caption = "DoStuff was called " & m_timesDone & " time(s)."

       If m_stopHere Then
    MsgBox "Processing finished, closing form..."
    Unload Me
   End If
End Sub

Private Function DoStuff(times As Long) As Boolean

    Dim myCondition As Boolean

    If times < 5 Then
    MsgBox "You selected: " & Selection.Text
    Selection.Collapse wdCollapseEnd
    myCondition = True
    Else
    Me.Label1.Caption = "No more selections, thanks!"
    End If

    DoStuff = myCondition
End Function

Private Sub UserForm_Initialize()
    Me.Label1.Caption = "Please select some text in Word and press the button."
End Sub

別のコードモジュール:

Sub StopAndGo()
    UserForm1.Show vbModeless
End Sub
于 2009-04-30T12:18:12.810 に答える