Выберите регистр в if / then

#vba #ms-word

#vba #ms-word

Вопрос:

У меня есть кнопка переключения (TB) и поле со списком (CB) в пользовательской форме, где, если TB.value= True, то он должен определить, какое значение CB.value для вставки правильного файла.

Я использую оператор if / then для обращения к TB.value (я использовал это для других переключений в пользовательской форме, и оно было эффективным само по себе. Чтобы обратиться к CB.value, я пытаюсь использовать оператор select case.

Когда я запускаю скрипт с инструкцией select case в инструкции if / then, я не получаю файл для вставки.

Вот пример моего кода, в том числе то, как я перечислил CB для инициализации:

 Private Sub CommandButton1_Click()

CreateObject (Word.Application.Documents.Add)

If ToggleButton1.Value = True Then
Select Case File
    Case ComboBox1.Value = "File A"
        Selection.InsertFile FileName:="C:File A"
    Case ComboBox1.Value = "File B"
        Selection.InsertFile FileName:="C:File B"
    End Select
Else:
    ToggleButton1.Value = False
End If

Unload Me

End Sub



Private Sub Userform_Initialize()

With ComboBox1
    .AddItem "File A", 0
    .AddItem "File B", 1
    End With

End Sub
  

Если кто-нибудь сможет помочь мне выяснить, почему я не могу вставить файл, используя вышеуказанный метод, это было бы оценено. Если есть лучший способ сделать это, я бы тоже хотел это услышать!

Заранее благодарю вас.

Комментарии:

1. Спасибо за эту информацию об избыточности. Я все еще изучаю это, так что это весьма полезно! Я также взгляну на отступ; то, как он у меня есть в приведенном выше, немного отличается от того, где он находится в моем реальном коде (мне пришлось вставить 4 пробела перед подразделом, определением if и with). Я пытаюсь начать новые шаги без отступов, и все, что происходит внутри, падает ниже и с отступом.

2. В следующий раз попробуйте 4 пробела для всего блока кода 😉

Ответ №1:

Ваш регистр выбора находится в ошибке:

 Select Case ComboBox1.Value
    Case "File A"
        Selection.InsertFile FileName:="C:File A"
    Case  "File B"
        Selection.InsertFile FileName:="C:File B"
    End Select
  

Вы помещаете то, что вы тестируете, в строку Выбора регистра, а возможные результаты — в строки обращения.

Комментарии:

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

2. Попробуйте добавить Case Else: msgbox "No matches found" перед End Select и посмотрите, нашли ли вы совпадение.

3. Это дало результат… совпадений не найдено. Есть ли другой способ сопоставить поле со списком.значение=, которое не является содержимым поля со списком? Извините, если это глупый вопрос.

4. Я вернулся назад и использовал вложенный if / else и учитывал файл A и файл B. Это дало мне правильный вывод, хотя я не знаю, почему мой вложенный регистр выбора не выполняет то же самое. Спасибо за помощь, Скотт!