(Mong mọi người giúp đỡ em với ạ) Lỗi mParent - treeview trong vba excel

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

pupuchcha

Thành viên mới
Tham gia
21/4/24
Bài viết
4
Được thích
0
em có dùng treeview để tạo biểu đồ cây và muốn viết code để khi nhấp vào phần con trong biểu đồ cây thị nội dung từ sheet sẽ hiện lên nhưng code em bị lỗi như thế này ạ. Mong mọi người giúp đỡ em ạ
1713713447774.png
Đây là code của em ạ, phần gạch dưới là phần hiện lỗi nhưng em không biết phải sửa thế nào ạ
Private Sub UserForm_Initialize()

Me.TreeView1.Nodes.Add Key:="BH", Text:="BAN HANG"

Me.TreeView1.Nodes.Add Key:="MH", Text:="MUA HANG"

Me.TreeView1.Nodes.Add Key:="BN", Text:="BIEN NHAN"

Me.TreeView1.Nodes.Add Key:="TT", Text:="THANH TOAN"



Me.TreeView1.Nodes.Add "BH", tvwChild, "BHCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "BH", tvwChild, "BHTM", "TIEN MAT"



Me.TreeView1.Nodes.Add "MH", tvwChild, "MHCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "MH", tvwChild, "MHTM", "TIEN MAT"



Me.TreeView1.Nodes.Add "BN", tvwChild, "BNCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "BN", tvwChild, "BNTM", "TIEN MAT"



Me.TreeView1.Nodes.Add "TT", tvwChild, "TTCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "TT", tvwChild, "TTTM", "TIEN MAT"



End Sub



Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)

Dim RNG As Long

Dim mKey, mParent As String

Dim SHT As Worksheet

Set SHT = Sheets (“Database”)

Me.ListBox1.Clear

Me.ListBox1.AddItem

For x = 0 To 8

Me.ListBox1.List(0, x) = SHT.Cells(1, x + 2)

Next x

Me.ListBox1.Selected(0) = True

RNG = SHT.range(“A2”) .CurrentRegion.Rows.Count

mKey = Left (Node.Key, 4)

mParent = Node.Parent

For I = 1 To RNG

If mkey = sht.Cells (I, “I”) And mParent = SHT.Cells(I, “C”) Then

Me.ListBox1.AddItem SHT.Cells(I, “B”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 1) = SHT.Cells(I, “C”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 2) = SHT.Cells(I, “D”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 3) = SHT.Cells(I, “E”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 4) = SHT.Cells(I, “F”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 5) = SHT.Cells(I, “G”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 6) = SHT.Cells(I, “H”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 7) = SHT.Cells(I, “I”)



End If

Next I

End Sub
 

File đính kèm

  • Book1.xlsm
    17.2 KB · Đọc: 6
em có dùng treeview để tạo biểu đồ cây và muốn viết code để khi nhấp vào phần con trong biểu đồ cây thị nội dung từ sheet sẽ hiện lên nhưng code em bị lỗi như thế này ạ. Mong mọi người giúp đỡ em ạ
View attachment 300416
Đây là code của em ạ, phần gạch dưới là phần hiện lỗi nhưng em không biết phải sửa thế nào ạ
Private Sub UserForm_Initialize()

Me.TreeView1.Nodes.Add Key:="BH", Text:="BAN HANG"

Me.TreeView1.Nodes.Add Key:="MH", Text:="MUA HANG"

Me.TreeView1.Nodes.Add Key:="BN", Text:="BIEN NHAN"

Me.TreeView1.Nodes.Add Key:="TT", Text:="THANH TOAN"



Me.TreeView1.Nodes.Add "BH", tvwChild, "BHCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "BH", tvwChild, "BHTM", "TIEN MAT"



Me.TreeView1.Nodes.Add "MH", tvwChild, "MHCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "MH", tvwChild, "MHTM", "TIEN MAT"



Me.TreeView1.Nodes.Add "BN", tvwChild, "BNCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "BN", tvwChild, "BNTM", "TIEN MAT"



Me.TreeView1.Nodes.Add "TT", tvwChild, "TTCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "TT", tvwChild, "TTTM", "TIEN MAT"



End Sub



Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)

Dim RNG As Long

Dim mKey, mParent As String

Dim SHT As Worksheet

Set SHT = Sheets (“Database”)

Me.ListBox1.Clear

Me.ListBox1.AddItem

For x = 0 To 8

Me.ListBox1.List(0, x) = SHT.Cells(1, x + 2)

Next x

Me.ListBox1.Selected(0) = True

RNG = SHT.range(“A2”) .CurrentRegion.Rows.Count

mKey = Left (Node.Key, 4)

mParent = Node.Parent

For I = 1 To RNG

If mkey = sht.Cells (I, “I”) And mParent = SHT.Cells(I, “C”) Then

Me.ListBox1.AddItem SHT.Cells(I, “B”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 1) = SHT.Cells(I, “C”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 2) = SHT.Cells(I, “D”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 3) = SHT.Cells(I, “E”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 4) = SHT.Cells(I, “F”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 5) = SHT.Cells(I, “G”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 6) = SHT.Cells(I, “H”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 7) = SHT.Cells(I, “I”)



End If

Next I

End Sub
Trước hết góp ý với bạn là nên sửa lại tiêu đề cho phù hợp, tiêu đề nên rõ ràng hơn chút.
Để sửa lỗi đó bạn thêm lệnh phía dưới trước dòng bị lỗi.
Mã:
If Node.Parent Is Nothing Then Exit Sub
 
Upvote 0
Trước hết góp ý với bạn là nên sửa lại tiêu đề cho phù hợp, tiêu đề nên rõ ràng hơn chút.
Để sửa lỗi đó bạn thêm lệnh phía dưới trước dòng bị lỗi.
Mã:
If Node.Parent Is Nothing Then Exit Sub
dạ vì lần đầu nên em chưa có kinh nghiệm viết bài ạ. Em sẽ rút kinh nghiệm lần sau.
Em có thêm phần code vào thì code chạy được nhưng khi click vào phần con thì nội dung vẫn không hiện ra thì có thể do lỗi gì ạ
 

File đính kèm

  • Screenshot 2024-04-22 094057.png
    Screenshot 2024-04-22 094057.png
    41.3 KB · Đọc: 6
Upvote 0
Upvote 0
File đính kèm và code trong bài không thấy giống nhau nhỉ ?
 
Upvote 0
dạ vì lần đầu nên em chưa có kinh nghiệm viết bài ạ. Em sẽ rút kinh nghiệm lần sau.
Em có thêm phần code vào thì code chạy được nhưng khi click vào phần con thì nội dung vẫn không hiện ra thì có thể do lỗi gì ạ
Nội dung trong sheet của bạn có dấu trong khi bạn lại so sánh với nội dung không có dấu trong treeview làm sao thỏa mãn điều kiện và cho kết quá đúng.
 

File đính kèm

  • Book1 (1).xlsm
    23.9 KB · Đọc: 9
Upvote 0

File đính kèm

  • 1713780327949.png
    1713780327949.png
    169.6 KB · Đọc: 8
Lần chỉnh sửa cuối:
Upvote 0
Nội dung trong sheet của bạn có dấu trong khi bạn lại so sánh với nội dung không có dấu trong treeview làm sao thỏa mãn điều kiện và cho kết quá đúng.
TreeView không thể áp dụng unicode được đâu:

1713781027052.png

Nếu muốn hiện ra dấu tiếng Việt phải convert theo mã font như ListView đó:
1713781168974.png
em có dùng treeview để tạo biểu đồ cây và muốn viết code để khi nhấp vào phần con trong biểu đồ cây thị nội dung từ sheet sẽ hiện lên nhưng code em bị lỗi như thế này ạ. Mong mọi người giúp đỡ em ạ
View attachment 300416
Đây là code của em ạ, phần gạch dưới là phần hiện lỗi nhưng em không biết phải sửa thế nào ạ
Private Sub UserForm_Initialize()

Me.TreeView1.Nodes.Add Key:="BH", Text:="BAN HANG"

Me.TreeView1.Nodes.Add Key:="MH", Text:="MUA HANG"

Me.TreeView1.Nodes.Add Key:="BN", Text:="BIEN NHAN"

Me.TreeView1.Nodes.Add Key:="TT", Text:="THANH TOAN"



Me.TreeView1.Nodes.Add "BH", tvwChild, "BHCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "BH", tvwChild, "BHTM", "TIEN MAT"



Me.TreeView1.Nodes.Add "MH", tvwChild, "MHCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "MH", tvwChild, "MHTM", "TIEN MAT"



Me.TreeView1.Nodes.Add "BN", tvwChild, "BNCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "BN", tvwChild, "BNTM", "TIEN MAT"



Me.TreeView1.Nodes.Add "TT", tvwChild, "TTCK", "CHUYEN KHOAN"

Me.TreeView1.Nodes.Add "TT", tvwChild, "TTTM", "TIEN MAT"



End Sub



Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)

Dim RNG As Long

Dim mKey, mParent As String

Dim SHT As Worksheet

Set SHT = Sheets (“Database”)

Me.ListBox1.Clear

Me.ListBox1.AddItem

For x = 0 To 8

Me.ListBox1.List(0, x) = SHT.Cells(1, x + 2)

Next x

Me.ListBox1.Selected(0) = True

RNG = SHT.range(“A2”) .CurrentRegion.Rows.Count

mKey = Left (Node.Key, 4)

mParent = Node.Parent

For I = 1 To RNG

If mkey = sht.Cells (I, “I”) And mParent = SHT.Cells(I, “C”) Then

Me.ListBox1.AddItem SHT.Cells(I, “B”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 1) = SHT.Cells(I, “C”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 2) = SHT.Cells(I, “D”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 3) = SHT.Cells(I, “E”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 4) = SHT.Cells(I, “F”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 5) = SHT.Cells(I, “G”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 6) = SHT.Cells(I, “H”)

Me.ListBox1.List (Me.ListBox1.ListCount – 1, 7) = SHT.Cells(I, “I”)



End If

Next I

End Sub

mParent = Node.Parent
Lẽ ra mParent = Node.Text mới chuẩn.
 
Upvote 0
Web KT
Back
Top Bottom