如何使用VBA Excel为树视图正确定义子节点?

时间:2018-06-26 11:23:09

标签: excel vba excel-vba

我不确定将示例转换为字符串时,为什么会出现无效的键错误。

Private Sub UserForm_Initialize()

Dim i As Long, j As Long, Total_rows_Column As Long
Dim unique_keys As Long

For i = 1 To 5
    TreeView1.Nodes.Add Key:=Worksheets("Sheet1").Cells(1, i), Text:=Worksheets("Sheet1").Cells(1, i)
Next i

unique_keys = 0
For i = 1 To 5
    Total_rows_Column = Worksheets("Sheet1").Range(Col_Letter(i) & Rows.Count).End(xlUp).Row
    For j = 2 To Total_rows_Column
        unique_keys = unique_keys + 1
        'ERROR IN THE LINE BELOW************
        TreeView1.Nodes.Add Worksheets("Sheet1").Cells(1, i).Value, tvwChild, CStr(unique_keys), Worksheets("Sheet1").Cells(j, i).Value
    Next j
Next i

End Sub

2 个答案:

答案 0 :(得分:2)

似乎TreeNode的key可能不只包含数字(尝试和错误,没有找到任何引用)。尝试类似

TreeView1.Nodes.Add Worksheets("Sheet1").Cells(1, i).Value, _
       tvwChild, "Key" & CStr(unique_keys), _
       Worksheets("Sheet1").Cells(j, i).Value

更新: 节点的 key 用作节点的 name ,而 name 可能不是数字。您可以编写TreeView1.Nodes("Key1").Text = "MyTest"来访问该节点,但是如果名称为1,则编译器将不会告诉您该节点是 name 还是 >索引 1

答案 1 :(得分:2)

这是一些最小的代码,可以正常工作,产生以下代码:

enter image description here

Private Sub UserForm_Initialize()

    Dim i&, j&
    For i = 1 To 5
        Me.TreeView1.Nodes.Add Key:="key" & i, Text:="text" & i
    Next i

    For i = 1 To 5
        For j = 2 To 3
         TreeView1.Nodes.Add "key" & i, tvwChild, "Some More Text" & j & i, "Even More" & j
        Next j
    Next i

End Sub

该键似乎应该包含非数字字符且不包含空值-VBA treeview loading issue - invalid key