Я пытаюсь создать простую форму пользователя, которая добавляет и удаляет блок текста в Word - PullRequest
0 голосов
/ 17 мая 2019

У меня есть пользовательская форма с кучей флажков.Я хочу, чтобы код VBA добавил блок текста (определяемый как переменная), если флажок установлен в true, и удалил этот блок текста, если он не отмечен.Например, вот что у меня есть для одного из флажков:

Private Sub CheckBox1_Click()
    Dim Text1 As String
    Text1 = "Text test"
    If CheckBox1.Value = True Then
    Selection.TypeText Text:=Text1
    Selection.InsertParagraph
    End If
    If CheckBox1.Value = False Then
    Selection.Delete Text:=Text1
    End If
End Sub

Прежде всего, часть Selection.Delete Text:=Text1 совершенно неверна.Я пытался найти что-то похожее в Google и не смог найти ничего, что удаляет содержимое переменной.

Во-вторых, похоже, ошибка с кодом Selection.InsertParagraph.Я хочу, чтобы он добавлял новый абзац между каждым блоком текста / переменной, однако, учитывая то, как теперь выглядит код, он добавляет текстовый блок и абзацы отдельно, как если бы я активировал макрос 3 раза:

Текстовый тестТекстовый тестТекстовый тест

(новый абзац)

(новый абзац)

(новый абзац)

ЧтоЯ хочу вместо этого:

Тест текста

(новый абзац)

Тест текста

(новый абзац)

Тест текста

(новый абзац)

1 Ответ

1 голос
/ 20 мая 2019

Отвечая на первый вопрос, для которого имеется достаточно информации, чтобы дать ответ ...

Лучший контроль того, где что-то вставлено и задано в документе Word, - это использование Range объектов.Может быть только один выбор, но код может работать с несколькими диапазонами.

Для вставки нового абзаца, следующего сразу за текстом, можно добавить новый абзац в конец текста, используя символ ANSI 13, который можно представить в коде VBA, используя vbCr.

* 1008.* Пример:
Private Sub CheckBox1_Click()
    Dim Text1 As String
    Dim rngTarget as Range

    Text1 = "Text test"
    Set rngTarget = Selection.Range

    If CheckBox1.Value = True Then
      rngTarget.Text = Text1 & vbCr
    End If
    '
    'If CheckBox1.Value = False Then
    '  Selection.Delete Text:=Text1
    'End If

   '''Move to the end of the range and select that for the next iteration
    rngTarget.Collapse wdCollapseEnd
    rngTarget.Select
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...