Автор Тема: Вывод текста в зависимости от выбраных ответов  (Прочитано 389 раз)

Оффлайн Посетитель 08.02.2022

  • Посетитель форума
  • Сообщений: 4
Привет друзья!

Есть задача:
Создать анкету в Word, в анкете есть два вопроса:
А. Является ли договор краткосрочным (ответы да / нет) (ответ выбирается в поле со списком "srok")
Б. Рыночная стоимость актива менее 300 т.р. (ответ да / нет) (ответ выбирается в поле со списком "price")

В зависимости от ответов в начале документа должен появится текст:

1. А - нет, Б - нет (текст: релевантным)
2. А - да, Б - нет (текст: релевантным с упрощением по сроку)
3. А - нет, Б - да (текст: релевантным с упрощением по стоимости)
4. А -да, Б - да (релевантным с упрощением по стоимости)
5. А - не выбрано, Б - не выбрано (текст: Ошибка. Выберите ответы)


Решение, которое не помагает и выдает массу ошибок:

В Word через средства разработчика созданы два поля со списком "srok_Change" , "price_Change"
В начале документа, где должен появляться текст, созад объект типа DocVariable с именем "relev"
В Visual Basic написан следующий код:
Спойлер
Private Sub Document_New()
 
Const txtRelev As String = "Релевантным"
Const txtRelevSrok As String = "Релевантным с упрощением по сроку"
Const txtRelevPrice As String = "Релевантным с упрощением по стоимости"
Const txtError As String = "Ошибка. Выберите ответы"
 
Dim tVar As Variable
Set tVar = ActiveDocument.Variables("relev")
 
If tVar Is Nothing Then
Set tVar = ActiveDocument.Variables.Add("relev", "")
End If
 
Dim bSrok As Boolean
Dim bPrice As Boolean
 
Private Sub srok_Change ()
Select Case srok_Change.Value
Case "Да"
bSrok.Value = True
Case "Нет"
bSrok.Value = False
End Select
End Sub
 
Private Sub price_Change ()
Select Case price_Change.Value
Case "Да"
bPrice.Value = True
Case "Нет"
bPrice.Value = False
End Select
 
If bSrok = False And bPrice = False Then tVar = txtRelev
If bSrok = True And bPrice = False Then tVar = txtRelevSrok
If bSrok = False And bPrice = True Then tVar = txtRelevPrice
If bSrok = True And bPrice = True Then tVar = txtRelevPrice
ActiceDocument.Fields.Update
 
End Sub

В итоге ничего не работает.
За основу взял готовое решение на просторах интернета и попробовал подстроить под свои нужды, но увы и ах.
Помогите пожалуйста, подскажите что делаю не так и желательно поподробнее.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Создайте файл для форума и выложите на форуме. Почему вы файл не выкладываете, а устно объясняете?

Оффлайн Посетитель 08.02.2022

  • Посетитель форума
  • Сообщений: 4
Прошу прощения, забыл приложить

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Снова у вас не получилось. В первом сообщении одно, выложили другой файл.
Сделайте специально для форума файл и по нему спрашивайте, не нужно выкладывать все свои наработки.

Оффлайн Посетитель 08.02.2022

  • Посетитель форума
  • Сообщений: 4
Это единственный рабочий файл, в нем все делается и его я сохранил для форума.
Иных версий нет.
Возможно немного уже поменял что то, но смысл остался тот же

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Сделайте описание относительно того файла, что вы выложили. Я читаю первое сообщение и не знаю, куда смотреть в файле.

Оффлайн Посетитель 08.02.2022

  • Посетитель форума
  • Сообщений: 4
Все абсолютно так же:

Созданы два поля со списком
https://ibb.co/Lpyw02S

В зависимости от ответов вверху документа должен появиться текст
https://ibb.co/Yf6q5hL

Я добавил в данное место объект
https://ibb.co/p0gwymN

В Visual Basic добавил код
https://ibb.co/qpHh2Kk

По итогу не работает
Возможно я вообще начал не так и проблема не в коде

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
DocVariable всегда будет в файле или может быть, может не быть? Почему DocVariable может не быть, если вы её создали заранее?

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Первая ошибка у вас - поле DocVariable не предназначено для отображения текста в тексте документа.
Используйте закладку или также используйте поле со вкладки Разработчик.
DocVariable нельзя увидеть визуально - можно просто обращаться к этому полю в каких-то случаях (в каких - не знаю).

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Остались у вас вопрос по DocVariable? Исправьте ваш код и шаблон, а потом можно будет дальше искать проблемы.