5

私はExcelTreeView内に を持っています。UserFormからノードを選択するとTreeViewListBoxデータが読み込まれます。
のアイテムをListBoxダブルクリックUserFormすると、ユーザーが詰め込むことができるセパレートが表示されます。
ユーザーが に戻ったら、TreeView UserForm以前Nodeに選択した を強調表示します。

問題は、UserForm基本的に が自動的にリセットされ、NodeVBA で を選択する方法がわからないことです。

NodeClick私が試した他のすべてが失敗したため、手動でイベントを発生させることができるかどうかについて議論している時点です。

任意のヒント?

4

5 に答える 5

3

これは古い質問であることは知っていますが、自分でまともな答えを見つけるのに苦労したので、ここに行きます。インデックスまたはキーは常に利用できるとは限りません。作成時に、ノードのフルパスを node.tag に配置します。ダブルクリックでタグ値を呼び出し、後でツリービュー ノード コレクションでタグを検索します。過ぎる?効率的ではありませんか?多分ですが、その作品は毎回魅力的で、ツリービューの目的に基づいてタグで独自の識別子を使用できます。検索コード:

Sub MyTreeview_FindNode(strKey As String)
Dim myNode As Node

   For Each myNode In Me.Treeview.Nodes
       If myNode.Tag = strKey Then
          myNode.Selected = True
          myNode.EnsureVisible
          End If
       Next
End Sub 
于 2013-06-26T14:18:13.017 に答える
1

いくつかのオプションがあります。まず、TreeView UserForm が 2 番目の UserForm を表示するときに、次のいずれかを行う必要があります。

  1. 選択したノードの ID を保存します (フォーム レベルまたはモジュール レベルの変数を使用します)。次に、フォームに戻ったときにノードを選択するメソッドを作成する必要があります。IIRC では、ノード要素ごとに一意の「キー」または ID を取得し、TreeView.FindNode から返されたノードに TreeView.Select を使用する必要があります。 - また -
  2. TreeView UserForm を閉じるのではなく非表示にします (Me.Hide)。2 番目のユーザー フォームが閉じられる (または [OK]/[キャンセル] が押される) と、TreeView ユーザー フォームが再び表示されます (TreeViewForm.Show)。
于 2009-01-20T00:23:37.793 に答える
0

これを試してください: objTreeview.Object.Nodes(KEY_NAME).Selected=TRUE

KEY_NAME は、ノードの作成に使用したキー (文字列) です。

于 2015-09-18T10:58:28.063 に答える