2016-12-17 3 views
-1

私はvbaを初めて使用しています。私はWord文書のユーザーフォームで作業しています。私は、特定のコンボボックスを、文書そのものにあるブックマークのテキストに基づいてその項目の1つを選択しようとしています。私はブックマークのテキストをチェックするためにifステートメントを使用しています。一致していれば、選択したアイテムをコンボボックスの選択したアイテムに変更する必要があります。私は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

あなたの代わりに、さらにvbCrLf

CHR(13)を使用する必要があります。ListIndexプロパティはおそらく、整数ではなく、配列

戻りますので、

Me.cbxShipFrom.ListIndex(0) 

は有効な式ではありません使いたい:

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

これは素晴らしい仕事!私はwith文も知りませんでした。繰り返しコードを集約する可能性があります。ありがとう! – Christopher

+0

ようこそ。あなたは、With文について正しいです。これは、参照されるオブジェクトへの複数のメモリアクセスを避けるため、コードのパフォーマンスも向上させます – user3598756

関連する問題