#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. Это дало мне правильный вывод, хотя я не знаю, почему мой вложенный регистр выбора не выполняет то же самое. Спасибо за помощь, Скотт!