[UserForm]TreeView-Completed

7. Ví dụ về sử dụng control TreeView trong thực tiễn
(Phần 4)
Ở phần này, tôi sẽ thêm chức năng cho TreeView, nếu người dùng ấn phím F2, thì có thể thay đổi tên sheet.
Bạn cần đăng nhập để thấy hình ảnh

Mã:
Private Sub TreeView1_KeyUp(KeyCode As Integer, ByVal Shift As Integer)
    If KeyCode = 113 Then 'Phim F2
        TreeView1.StartLabelEdit
    End If
End Sub
Với đoạn code trên, chúng ta có thể chỉnh sửa tên Node. Bây giờ tới vấn đề sửa tên sheet, sẽ có các vấn đề như sau:
-Tên sheet mà chúng ta muốn thay đổi đã tồn tại trong file Excel đó hay chưa, nếu đã có rồi thì việc thay đổi là không thể thực thi.
-Tôi không rõ qui tắc tên đặt cho sheet phải chứa những ký tự gì, để phòng tránh người dùng sử dụng ký tự quá lạ dẫn tới không thể đặt tên cho sheet, chúng ta sẽ thực hiện bước kiểm tra sau khi người dùng nhập tên sheet mới thì file Excel đó đã có tên sheet mà chúng ta chỉ định hay chưa?
Chúng ta sẽ viết code trên sự kiện AfterLabelEdit của TreeView.
Mã:
Private Sub TreeView1_AfterLabelEdit(Cancel As Integer, NewString As String)
    Dim BookName As String, SheetName As String, ws, flag As Boolean
    With TreeView1
        BookName = .SelectedItem.Parent
        SheetName = .SelectedItem
        ''Co ton tai Sheet trung ten hay khong?
        For Each ws In Workbooks(BookName).Worksheets
            If ws.Name = NewString Then
                flag = True
                Exit For
            End If
        Next ws
        If flag Then
            MsgBox NewString & " : ten sheet nay da ton tai roi", vbExclamation
            Cancel = True
            Exit Sub
        End If
        ''Xu ly chinh, thay doi ten sheet
        On Error Resume Next
        Workbooks(BookName).Worksheets(SheetName).Name = NewString
        ''Kiem tra thay doi ten sheet thanh cong hay chua?
        For Each ws In Workbooks(BookName).Worksheets
            If ws.Name = NewString Then
                flag = True
                Exit For
            End If
        Next ws
        ''Neu that bai thi dua ra thong bao
        If Not flag Then
            MsgBox NewString & ": Khong the thay doi ten sheet", vbExclamation
            Cancel = True
        End If
    End With
End Sub
File demo download .
 

Euler

Administrator
Thành viên BQT
Toàn bộ nội dung topic này đã được chúng tôi tổng hợp thành cuốn Ebook VBA_TreeView, các bạn download ở đây nhé:
 
Sửa lần cuối:
Toàn bộ nội dung topic này đã được chúng tôi tổng hợp thành cuốn Ebook VBA_TreeView, các bạn download ở đây nhé:
Mình đang tạo một treeview có parent là các workbook, child là các sheet. Và giờ muốn khi click vào các node thì nó sẽ nhẩy đến các workbook hoặc sheet tương ứng thì có làm được ko nhỉ? nếu được thì viết như nào nhỉ? các bạn gợi ý giúp mình với! cảm ơn mọi người ạ!
 
Top