Как сохранить ячейки выбранных таблиц, выбранные после запуска макроса? - PullRequest
0 голосов
/ 17 декабря 2018

Когда я запускаю макрос, упомянутый ниже, чтобы изменить слова выбранных ячеек таблицы, макрос отменяет выделение выбранных ячеек после первого запуска.Я хочу, чтобы выбранные ячейки были выбраны после запуска этого макроса, чтобы я мог вызвать второй макрос для того же выбора.

Private Sub CommandButton1_Click()

Dim rng As Word.Range
Dim cl As Word.Cell
Dim i As Integer, iRng As Word.Range
Dim oWords As Words
Dim oWord As Range

If Selection.Information(wdWithInTable) = True Then
    For Each cl In Selection.Cells
        Set rng = cl.Range
        rng.MoveEnd Word.WdUnits.wdCharacter, Count:=-1
        For i = 1 To rng.Words.Count
            Set iRng = rng.Words(i)
            'rng.Select

            Set oWord = iRng
            Do While oWord.Characters.Last.Text = " "
                Call oWord.MoveEnd(WdUnits.wdCharacter, -1)
            Loop
            Debug.Print "'" & oWord.Text & "'"
            oWord.Text = StrReverse(oWord.Text)

            Debug.Print Selection.Text

        Next i
    Next cl
End If

End Sub
Sub Align()

'Selection.RtlPara
 Selection.LtrPara

 End Sub

 Private Sub CommandButton2_Click()

 Call Align
 Call CommandButton1_Click
 Call Comma_Remove
 Call CommandButton1_Click

 End Sub

 Sub Comma_Remove()


Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = ","
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Вы можете увидеть прикрепленный Pic для более ясного понимания

1 Ответ

0 голосов
/ 17 декабря 2018

Вам нужно запустить второй макрос отдельно?Вы можете просто добавить в конце вашего макроса вызов второго.

Возможно, вы захотите передать выделение второму макросу примерно так:

** РЕДАКТИРОВАТЬ: добавлено немногобольше ясности (я надеюсь) **

Sub firstMacro(selection)

'' Do stuff with Selection
Debug.Print "This is the first macro and address of selection is: " & selection.Address

End Sub

Sub secondMacro(selection)

'' Do more stuff with Selection
Debug.Print "This is the second macro and address of selection is: " & selection.Address

End Sub


Private Sub CommandButton1_Click()

    Call firstMacro(selection)

    Call secondMacro(selection)

End Sub

Private Sub CommandButton2_Click(selection) '<--- THIS IS WRONG

End Sub
...