日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

kendo treeview 修改节点显示值_VBA学习笔记60-1: Treeview控件

發(fā)布時間:2025/3/12 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kendo treeview 修改节点显示值_VBA学习笔记60-1: Treeview控件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學(xué)習(xí)資源:《Excel VBA從入門到進階》第60集 by蘭色幻想


本節(jié)講Treeview控件。

TreeView控件是以樹形結(jié)構(gòu)顯示數(shù)據(jù)的控件。利用TreeView控件,可以設(shè)計出樹形結(jié)構(gòu)圖,便于用戶選擇不同的項目。

總公司人事結(jié)構(gòu)是一級節(jié)點,公司一、公司二、公司三是二級節(jié)點,部門是三級節(jié)點,人員是四級節(jié)點

首先需要把treeview控件添加到工具箱,依舊在工具箱,右鍵附加控件,找到Microsoft TreeView Control,確定,就可以在工具箱找到它了。

一、數(shù)據(jù)導(dǎo)入

treeview是由節(jié)點構(gòu)成的,第一個節(jié)點叫頂級節(jié)點,其余的是子節(jié)點。

例:把以下公司結(jié)構(gòu)表做成Treeview。

可以看到已經(jīng)把各級別標(biāo)記為不同顏色,代碼也是遞進有層次感的,可以單從員工的代碼看出他所屬的公司和部門。下面以一個結(jié)構(gòu)圖展示節(jié)點分布:

代碼思路講解:

  • treeview控件添加節(jié)點的ADD方法:
  • Treeview1.Nodes.Add(上一級節(jié)點的索引值,是否為子節(jié)點,節(jié)點的索引值,節(jié)點上顯示的文字,圖標(biāo)的索引號,選取節(jié)點時的圖標(biāo))
    TreeView1.Nodes.Add(relative, relationship, key, text, image)

    注意:

    ① 節(jié)點對象:Nodes

    ② 如果一級節(jié)點的索引值和創(chuàng)建節(jié)點的位置為空的話,則表示創(chuàng)建是的頂級節(jié)點。

    ③ 節(jié)點的索引值不能是純數(shù)字。

    ④ 子節(jié)點的表示:tvwChild。

    ⑤ 選取節(jié)點時的圖標(biāo)可選,前四個參數(shù)必須。

    套到例子里,寫創(chuàng)建頂級節(jié)點的語句:

    Set Nodx = TreeView1.Nodes.Add(, , "總公司", "總公司人事結(jié)構(gòu)", 1)

    ①上一級節(jié)點的索引值:因為是頂級節(jié)點,所以沒有上一級節(jié)點的索引值,略過不填

    ②是否為子節(jié)點:頂級節(jié)點不是子節(jié)點,略過不填(不填內(nèi)容也要寫逗號啊)

    ③節(jié)點的索引值:設(shè)置為"總公司"

    ④節(jié)點上顯示的文字:"總公司人事結(jié)構(gòu)"

    ⑤選取節(jié)點時的圖標(biāo):1(上節(jié)內(nèi)容imagelist,因為有圖標(biāo),所以記得也要在窗體插入imagelist控件)。

    **假設(shè)不設(shè)置選取節(jié)點時的圖標(biāo),代碼可寫為:

    Set Nodx = TreeView1.Nodes.Add(, , "總公司", "總公司人事結(jié)構(gòu)")

    最后的逗號可不寫,因為這項參數(shù)是可選的。

    寫創(chuàng)建子節(jié)點(公司一)的語句:

    Set Nodx = TreeView1.Nodes.Add("總公司", tvwChild, "A" & C2, C1 & "(" & C2 & ")", 2)

    ①上一級節(jié)點的索引值:“總公司”。

    ②是否為子節(jié)點:是,所以填tvwChild。

    ③節(jié)點的索引值:因為不能是純數(shù)字,為方便記憶,把表格中的代碼賦值給C2,寫成 "A" & C2。以公司一為例,那么它的索引值就是“A1”。

    ④節(jié)點上顯示的文字:C1 & "(" & C2 & ")",把表格中的級別賦值給C1。以公司一為例,那么它將會顯示為“公司一(1)”。

    ⑤選取節(jié)點時的圖標(biāo):2(imagelist控件的序號2圖片)。

    2. 代碼邏輯

    ①要顯示圖標(biāo),所以先要配置好lmagelist控件。

    ②循環(huán)語句,循環(huán)獲取級別和代碼。

    ③判斷語句,根據(jù)代碼判斷并生成對應(yīng)級別的節(jié)點。

    完整代碼:

    Private Sub UserForm_Initialize()Dim Nodx As nodeTreeView1.ImageList = ImageList1 '從imagelist控件中提取圖片 Set Nodx = TreeView1.Nodes.Add(, , "總公司", "總公司人事結(jié)構(gòu)", 1) '總公司是頂級節(jié)點的索引值,For x = 2 To Range("B65536").End(xlUp).RowC1 = Cells(x, 1)C2 = Cells(x, 2)If Len(C2) = 1 Then '如果代碼長度為1,說明是頂級節(jié)點下的二級節(jié)點Set Nodx = TreeView1.Nodes.Add("總公司", tvwChild, "A" & C2, C1 & "(" & C2 & ")", 2)ElseIf Len(C2) = 3 Then '如果代碼長度為3,說明是三級節(jié)點Set Nodx = TreeView1.Nodes.Add("A" & Left(C2, 1), tvwChild, "A" & C2, C1 & "(" & C2 & ")", 3)ElseIf Len(Cells(x, 2)) = 6 Then '如果代碼長度為6,說明是四級節(jié)點Set Nodx = TreeView1.Nodes.Add("A" & Left(C2, 3), tvwChild, "A" & C2, C1 & "(" & C2 & ")", 4)End IfNextEnd Sub

    運行演示:

    二、數(shù)據(jù)讀取

    有數(shù)據(jù)導(dǎo)入,就有數(shù)據(jù)讀取。如何讓程序識別到我們點擊了哪個節(jié)點呢?

    還是接上例,想達到如下效果:

    從圖中可以看到,每點擊一個節(jié)點,旁邊的文本框都會顯示它的信息。

    代碼思路講解:

  • 表示選取的節(jié)點
  • SelectedItem 正在選取的節(jié)點
    SelectedItem.Key 正在選取節(jié)點的索引值

    2. 節(jié)點包含的信息,第一個信息是它的索引值,剛剛除了頂級節(jié)點的索引值特別設(shè)置為“總公司”,其他索引值都是“A代碼”,代碼長度不一。第二個信息是它顯示出來的內(nèi)容text,除了頂級節(jié)點特別設(shè)置為“總公司人事結(jié)構(gòu)”,其他都是“級別名(代碼)”。

    所以我們需要根據(jù)代碼長度判斷,它所在的級別,使用判斷語句。

    ①如果代碼長度為2,表明它是二級節(jié)點,公司名稱就是節(jié)點的text(注意去除后面的“(代碼)”,部門和姓名沒有,代碼是去除首字母的索引值。

    ②如果代碼長度為4,表明它是三級節(jié)點,公司名稱是它的上一節(jié)點的text,部門是當(dāng)前節(jié)點的text,姓名沒有,代碼是去除首字母的索引值。

    上一節(jié)點 Nodes.Parent

    ②如果代碼長度為7,表明它是四級節(jié)點,公司名稱是它的上上一節(jié)點的text,部門是上一節(jié)點的text,姓名當(dāng)前節(jié)點的text,代碼是去除首字母的索引值。

    上上一節(jié)點 Nodes.Parent.Parent

    3. 去除Text后面的“(代碼)“內(nèi)容,因為比較重復(fù),寫一個VBA自定義函數(shù)。代碼和級別的長度不一,所以不能直接用Left,需要再加一個函數(shù)組合用,用字符查找函數(shù)InStr查找”(“的位置,用instr,算出left的截止位置。

    Function 截取名稱(AAA)截取名稱 = Left(AAA, InStr(1, AAA, "(") - 1) End Function

    完整代碼:

    Private Sub TreeView1_Click() Dim MyItem As nodeSet MyItem = TreeView1.SelectedItem 'SelectedItem正在選取的節(jié)點If Len(MyItem.Key) = 2 Then 'SelectedItem.Key 正在選取節(jié)點的索引值TextBox1 = 截取名稱(MyItem.Text) '如果是頂級節(jié)點,公司名稱等于節(jié)點的顯示內(nèi)容(去掉代碼)TextBox2.Value = ""TextBox3.Value = ""TextBox4 = Replace(MyItem.Key, "A", "") '替換掉A后的代碼 ElseIf Len(MyItem.Key) = 4 ThenTextBox1 = 截取名稱(MyItem.Parent.Text) ' MyItem.Parent.Text上一級節(jié)點的顯示文本TextBox2 = 截取名稱(MyItem.Text)TextBox3.Value = ""TextBox4 = Replace(MyItem.Key, "A", "") ElseIf Len(MyItem.Key) = 7 ThenTextBox1 = 截取名稱(MyItem.Parent.Parent.Text)TextBox2 = 截取名稱(MyItem.Parent.Text)TextBox3 = 截取名稱(MyItem.Text)TextBox4 = Replace(MyItem.Key, "A", "")End IfEnd Sub

    總結(jié)

    以上是生活随笔為你收集整理的kendo treeview 修改节点显示值_VBA学习笔记60-1: Treeview控件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。