2012-02-01 15 views
2

VBAを使用してWord 2003でプロジェクトを開発中です。私はいくつかのエントリ(日付)を持つ複数選択ListBoxを持っています。右クリックすると、ユーザーが選択した日付を変更できるところにあるInputBoxがポップアップします。これは、特定のアイテムがすでにフォーカスされている(選択されているだけでなく、フォーカスされている)限り、うまく機能します。しかし、フォーカスのないアイテムを右クリックすると、ボックスが表示され、フォーカスされたエントリの日付が変更されます。必ずしも右クリックしたものではありません。Word VBAの右クリックでリストボックス項目を選択

この回答が見つかりました(http://www.vbarchiv.net/tipps/tipp_920-rechtsklick-in-der-standard-listbox-erkennen.html)が、VBAでは不可能です。誰にもVBAの解決策はありますか?

実際には、ボックスが表示される前に、フォーカスされたアイテムを右クリックで変更する必要があります。

これは通常、リストボックスをサポートしていません。これはヒットテストで行われ

答えて

2

は、ここにハック方法ですありがとう。

別のリストボックスを追加しますが、フォーム上のどこかlbTestと呼ばれ、それが空白い箱のように見えるまで、ダブルそのBorderStyleプロパティをクリックして、うわー、これはかなりクールでそのvisible

false
Private LBI_HEIGHT As Long 

Private Sub UserForm_Initialize() 
    'get the height of a single list item in twips based on the fact the box will resize itself automatically; 
    With lbTest 
     .Width = 100 
     .Height = 1 
     .AddItem "X" 
     LBI_HEIGHT = .Height 
    End With 

    'add test data 
    Dim i As Long 
    For i = 1 To 50 
     ListBox1.AddItem "item " & i 
    Next 
End Sub 

Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) 
    'get the item at the Y coord based on the scroll position & item height 
    Dim derivedIndex As Long 
    derivedIndex = (Y \ LBI_HEIGHT) + ListBox1.TopIndex 

    Me.Caption = derivedIndex & " = " & ListBox1.List(derivedIndex) 
End Sub 
+0

を設定します。迅速で有能な答えをありがとうございます。短いテストでは、正確に所望の結果が得られました。 – phippu

関連する問題