2016-12-17 9 views
-1

Я новичок в vba, и я работал над пользовательской формой для моего Word. Я пытаюсь сделать определенный combobox, чтобы выбрать один из его элементов на основе текста закладки, которая находится в самом документе. Я использую оператор if, чтобы проверить текст закладки, и если он соответствует, он должен изменить выбранный элемент combobox на тот, который я выбираю. У меня очень мало знаний о vba, и у меня возникают проблемы с его работой. Я не уверен, где я ошибаюсь. Вот мой код.Изменить выбор ComboBox на основе закладки в документе

Private Sub UserForm_Initialize() 

    Me.cbxShipFrom.AddItem ("My Company") 
    Me.cbxShipFrom.AddItem ("Warehouse") 
    Me.cbxShipFrom.AddItem ("Warehouse 2") 
    Me.cbxShipFrom.AddItem ("Other...") 

    If ActiveDocument.Bookmarks("shipfrom").Range.Text = "MY COMPANY" & vbCrLf & "123 BEETLE ST" & vbCrLf & "MYCITY, ST xZIPx" Then 
     Me.cbxShipFrom.Value = Me.cbxShipFrom.ListIndex(0) 
    End If 

End Sub 

ответ

0

вы должны использовать CHR(13) вместо vbCrLf

кроме того:

Me.cbxShipFrom.ListIndex(0) 

не является допустимым выражением, поскольку ListIndex свойство возвращает целое число, а не массив

вы, скорее всего, хотите использовать:

Me.cbxShipFrom.List(0) 

и возвращает первый элемент списка поле со списком

, наконец, вы можете использовать следующий небольшой рефакторинг вашего кода:

Private Sub UserForm_Initialize() 
    With Me.cbxShipFrom 
     .AddItem ("My Company") 
     .AddItem ("Warehouse") 
     .AddItem ("Warehouse 2") 
     .AddItem ("Other...") 
     If ActiveDocument.Bookmarks("shipfrom").Range.Text = "MY COMPANY" & Chr(13) & "123 BEETLE ST" & Chr(13) & "MYCITY, ST xZIPx" Then 
      .Value = .List(0) 
     End If 
    End With 
End Sub 
+0

Это работало отлично! Я тоже не знал об этом с заявлением, я вижу, что это потенциал для сокращения повторяющегося кода. Благодаря! – Christopher

+0

Добро пожаловать. Вы правы в отношении оператора With, что также повышает производительность кода, поскольку он позволяет избежать множественного доступа к памяти на указанный объект – user3598756