Lỗi Textbox trong userform

Liên hệ QC

NguyenthiH

Thành viên mới đăng ký
Tham gia
11/12/16
Bài viết
940
Được thích
172
Giới tính
Nữ
Em có ý định khi click vào D3 sheet1 thì hiên userform1 và ẩn các TextBox, nhưng khi chạy code thì lỗi ngay TextBox1 ạ.
Mã:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("D3")) Is Nothing Then
            UserForm1.Show
            TextBox1.Visible = False''''loi ngay TextBox1
            TextBox2.Visible = False
            TextBox3.Visible = False

        End If

    End If

End Sub
mong các anh chị giúp đỡ chỉnh code ạ.
 

File đính kèm

  • Book1.xlsm
    15.3 KB · Đọc: 5
Em có ý định khi click vào D3 sheet1 thì hiên userform1 và ẩn các TextBox, nhưng khi chạy code thì lỗi ngay TextBox1 ạ.
Mã:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("D3")) Is Nothing Then
            UserForm1.Show
            TextBox1.Visible = False''''loi ngay TextBox1
            TextBox2.Visible = False
            TextBox3.Visible = False

        End If

    End If

End Sub
mong các anh chị giúp đỡ chỉnh code ạ.
Hay là bạn thử thêm UserForm1.TextBox1.... coi có được không nha. Lỗi có lẻ sẽ hết nhưng code nhìn có vẻ sai sai sao í. Ai lại đi ẩn textbox chứ
 
Upvote 0
Đang trong sự kiện của worksheet thì mặc định các lệnh không ghi rõ nguồn gốc sẽ quánh lên sheet.
Show form cũng không dùng sự kiện selection change của sheet, chẳng thà double click hoặc vẽ 1 shape hoặc 1 command button.
Mà cũng không ai ghi kiểu userForm1.Textbox1 trong sự kiện của sheet. Những việc này phải để trong sự kiện của Form, cụ thể là sự kiện Initialize.
Xem ra phải hoàn thiện chủ đề lý thuyết User form mới được. Mất căn bản lý thuyết quá sức tưởng tượng.
 
Upvote 0
Sao em đã thay code, mà userform hiện lần đầu vẫn còn 3 TextBox, lần thứ hai mới ẩn 3 TextBox.
Mong các anh xem giúp.
 

File đính kèm

  • Book1.xlsm
    16.3 KB · Đọc: 4
Upvote 0
Userform có 2 chế độ Load là load ModeLess và Modal, thường thì UserForm load mặc định là Modal.
Hai chế độ này khác nhau. Nên việc viết mã cũng cần biết nhiều hơn về UserForm.

ModeLess sẽ cho phép thao tác trang tính, Modal không cho phép.
 

File đính kèm

  • Book1.xlsm
    14.8 KB · Đọc: 7
Upvote 0
Cám ơn anh @HeSanbi nhiều ạ.!!!!!
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Userform có 2 chế độ Load là load ModeLess và Modal, thường thì UserForm load mặc định là Modal.
Hai chế độ này khác nhau. Nên việc viết mã cũng cần biết nhiều hơn về UserForm.

ModeLess sẽ cho phép thao tác trang tính, Modal không cho phép.
Anh nói sâu về cái này hơn được không anh!
Em chỉ thấy có cài đặt ShowModal = True hoặc False, với 2 cài đặt này cách viết code có gì khác khau và cần lưu ý gì không
 
Upvote 0
Anh nói sâu về cái này hơn được không anh! em chỉ thấy có cài đặt Showmodal = true hoặc false, với 2 cài đặt này cách viết code có gì khác khau và cần lưu ý gì không không

Modal và Modeless là hai chế độ hiển thị Form khác nhau:
Modal được load thì mã không thể thao tác từ ngoài vào UserForm. Tất cả mã nằm trong phần mã UserForm mới có thể hoạt động với Form đó.
Khi form đang hiển thị thì không thể tác động vào Application vì Form sở hữu quyền cao nhất.

Modeless thì không có hạn chế.
 
Upvote 0
Hai chế độ này khác nhau. Nên việc viết mã cũng cần biết nhiều hơn về UserForm.
oh!. Thật ra là em đọc và hiểu nhầm câu trên của anh thành "Nên việc viết mã cũng cần khác nhau" nên mới thắc mắc. Còn nội dung anh chia sẻ em cũng đã có nắm sơ qua về việc thay đổi ShowModal = True và False để có thể thao tác với bảng tính hoặc khôgn rồi
 
Upvote 0
Sao em đã thay code, mà userform hiện lần đầu vẫn còn 3 TextBox, lần thứ hai mới ẩn 3 TextBox.
Mong các anh xem giúp.
Bài #3 đã nói là: "Những việc này phải để trong sự kiện của Form, cụ thể là sự kiện Initialize"
=> Thì bạn phải dùng đoạn code này trong UserForm:
Rich (BB code):
Private Sub UserForm_Initialize()
    TextBox1.Visible = False
    TextBox2.Visible = False
    TextBox3.Visible = False
End Sub
 
Upvote 0
Web KT
Back
Top Bottom