Thắc mắc về cách sử dụng userform

Liên hệ QC

Ngày mai trời lại sáng

Thành viên thường trực
Tham gia
4/7/21
Bài viết
339
Được thích
139
Khi mình muốn thay đổi giá trị của check box em có làm một cái thông báo có thay đổi hay không như code dưới đây:

Mã:
Private Sub CheckBox1_Click()
    Dim str As String, blCheck As Boolean, answer As Integer
    blCheck = Me.CheckBox1.Value
    If blCheck = True Then
        str = "Ban muon thay doi check box?"
    Else
        str = "Ban muon dung lai"
    End If
    answer = MsgBox(str, vbQuestion + vbYesNo + vbDefaultButton2)
    If answer = vbYes Then
        GoTo change
    Else
        Me.CheckBox1.Value = Not (blCheck)
        Exit Sub
    End If
change:
    MsgBox "OK"
End Sub

Vấn đề gặp phải khi em chọn No không thay đổi thì check box sẽ giữ nguyên giá trị như chưa kích vào, nhưng thông báo liên tục lặp lại như vòng lặp vô tận không có sự kết thúc.

Các bạn giúp mình cách xử lý với.
Cảm ơn nhiều
 

File đính kèm

  • checkbox.xlsm
    19.2 KB · Đọc: 6
Nếu tôi là bạn thì tôi đi tìm học Access trước.
VBA và Userform vốn là công cụ căn bản của Access. Có những tính chất hơi khó hiểu đối với Excel, nhưng nếu hiểu cách vận hành của Access thì thấy chúng hợp lý.
 
Upvote 0
Nếu tôi là bạn thì tôi đi tìm học Access trước.
VBA và Userform vốn là công cụ căn bản của Access. Có những tính chất hơi khó hiểu đối với Excel, nhưng nếu hiểu cách vận hành của Access thì thấy chúng hợp lý.
Bản office sếp cháu mua cho không có Access chú ơi, nên có học Access cũng không giải quyết được gì cho công việc hiện tại của cháu cả khà khà
 
Upvote 0
If blCheck = True Then str = "Ban muon thay doi check box?" Else str = "Ban muon dung lai" End If

Khúc này xoắn não thế? Cứ ấn vào checkbox là thay đổi rồi, sao lại có khúc dừng lại vậy? Hành động chọn No = Dừng lại rồi còn gì nữa.
 

File đính kèm

  • checkbox_.xlsm
    19.6 KB · Đọc: 5
Upvote 0
Bản office sếp cháu mua cho không có Access chú ơi, nên có học Access cũng không giải quyết được gì cho công việc hiện tại của cháu cả khà khà
Bảo sếp Access là công cụ quản lý CSDL. Nếu ngày nào số dữ liệu nở phồng lên thì CSDL là điều phải có. Vì vậy, người biết nhìn xa thì phải biết chuẩn bị đầu tư tương lai.
Vả lại, đầu tư này vốn chỉ nhỏ thôi mà lợi thâu về thì nhiều.
 
Upvote 0
Khúc này xoắn não thế? Cứ ấn vào checkbox là thay đổi rồi, sao lại có khúc dừng lại vậy? Hành động chọn No = Dừng lại rồi còn gì nữa.
Aà em đã hiểu,thì ra sử dụng biến valCheck dùng chung cho các sub.
cảm ơn bác đã chỉ dẫn
Bài đã được tự động gộp:

Bảo sếp Access là công cụ quản lý CSDL. Nếu ngày nào số dữ liệu nở phồng lên thì CSDL là điều phải có. Vì vậy, người biết nhìn xa thì phải biết chuẩn bị đầu tư tương lai.
Vả lại, đầu tư này vốn chỉ nhỏ thôi mà lợi thâu về thì nhiều.
vâng CSDL thì chuẩn chỉnh rồi ạ.
 
Upvote 0
Khi mình muốn thay đổi giá trị của check box em có làm một cái thông báo có thay đổi hay không như code dưới đây:

Cách khác:

Mã:
Private Sub CheckBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    Dim blCheck As Boolean
    blCheck = Me.CheckBox1
    If MsgBox("Ban muon thay doi checkbox?", vbQuestion + vbYesNo + vbDefaultButton2) = vbNo Then
        Me.CheckBox1 = Not blCheck
    End If
End Sub
 
Upvote 0
Cách khác:

Mã:
Private Sub CheckBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    Dim blCheck As Boolean
    blCheck = Me.CheckBox1
    If MsgBox("Ban muon thay doi checkbox?", vbQuestion + vbYesNo + vbDefaultButton2) = vbNo Then
        Me.CheckBox1 = Not blCheck
    End If
End Sub
Hay quá chỉ cần thay đổi sự kiện là có thể xử lý được vấn đề một cách đơn giản hơn, em cảm ơn bác.
 
Upvote 0
Với trường hợp sử dụng "ToggleButton",
Trường hợp 1: Sau khi làm gì đó (khi kích vào nó) dù chọn yes/no sau khi thực thi xong thì luôn ở chế độ Fase
để nổi lên (không bị chìm) giống như "commandButton" nhưng nhược điểm của "commandButton" không cho hiển thị tiếng Việt,nên em phải dùng "ToggleButton" do đó em có viết như sau:
Mã:
Private Sub ToggleButton1_Click()
    Dim answer As VbMsgBoxResult
    answer = MsgBox("Ban muon lam gi do?", vbQuestion + vbYesNo + vbDefaultButton2)
    ToggleButton1.Value = False
End Sub
Nhưng khi chạy nó luôn thực thi 2 lần.

Trường hợp 2: Nếu chọn Yes thì chìm OK, nhưng No thì cũng chạy 2 lần:
Mã:
Private Sub ToggleButton1_Click()
    Dim answer As VbMsgBoxResult
    answer = MsgBox("Ban muon lam gi do?", vbQuestion + vbYesNo + vbDefaultButton2)
    If answer = vbNo Then
        ToggleButton1.Value = False
    End If
End Sub

Các bác chỉ dẫn giúp em cách xử lý với.
Em cảm ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Chào các bác, em có tham khảo trên đây về cách zoom form, co kéo to nhỏ tùy thích.
Em có thử áp dụng nhưng không được, khi zoom to lên kích kim thì chỉ zoom được một phần,các nào biết xem giúp em với.
Em cảm ơn
 

File đính kèm

  • Zoom Form.xlsm
    58.4 KB · Đọc: 5
Upvote 0
Tôi không biết code trong tập tin của bạn (sau nhiều chỉnh sửa) và code trong bài #26 có giống nhau không:


Nếu đúng thì tôi đã chỉ ra trong bài #27 là không tốt đẹp như Tuân đã biểu diễn đâu.

Còn về zoom y như trong chủ đề (ở trạnh thái bình thường và trạng thái phóng to toàn màn hình) mà có link trên thì tôi cũng có giải pháp ở bài #33. Bài #40 được sửa sau những góp ý ở bài #39. Đọc cả bài #42, trong đó có sửa Sub CalcColWidths
 
Upvote 0
Tôi không biết code trong tập tin của bạn (sau nhiều chỉnh sửa) và code trong bài #26 có giống nhau không:


Nếu đúng thì tôi đã chỉ ra trong bài #27 là không tốt đẹp như Tuân đã biểu diễn đâu.

Còn về zoom y như trong chủ đề (ở trạnh thái bình thường và trạng thái phóng to toàn màn hình) mà có link trên thì tôi cũng có giải pháp ở bài #33. Bài #40 được sửa sau những góp ý ở bài #39. Đọc cả bài #42, trong đó có sửa Sub CalcColWidths
Cháu cảm ơn chú đã góp ý và chỉ dẫn, cháu sẽ đọc và áp dụng thử thêm các bài viết của chú bên chủ đề đó.
----------
Nhân đây cháu hỏi chú vấn đề ngoài lề một chút, cháu đang gặp phải vấn đề về in ấn đã nêu cụ thể ở bài 4 ở đây:
Chú có biết kỹ thuật nào để can thiệp vào hệ thống disable một số lựa chọn trong vấn đề in ấn này không ạ? Nếu chú biết xin hãy qua bên đó giúp cháu một tay ạ.
 
Upvote 0
Nhân đây cháu hỏi chú vấn đề ngoài lề một chút, cháu đang gặp phải vấn đề về in ấn đã nêu cụ thể ở bài 4 ở đây:
Chú có biết kỹ thuật nào để can thiệp vào hệ thống disable một số lựa chọn trong vấn đề in ấn này không ạ? Nếu chú biết xin hãy qua bên đó giúp cháu một tay ạ.
Tôi có đọc bài đầu sau đó bỏ vì tôi không có máy in. Rất có thể phải có máy in để thử nghiệm và mục sở thị, vì thế tôi không quan tâm nữa.
 
Upvote 0
Các bác ơi,em khai báo một mảng dữ liệu gọi là data,đối với ListBox em có thể nạp dữ liệu vào bằng cách ".List = data"
vậy đối với ListView thì có thể nạp dữ liệu vào bằng cách nào một cách nhanh nhất giống như ListBox không?
 
Upvote 0
Em có tạo 2 form như file đính kèm

Trong Form1 em chọn NV003
1648702340428.png

Làm thế nào để khi bấm vào showForm2 nó hiện
1648702429539.png
Các bác chỉ giúp em cách làm với.
 

File đính kèm

  • Form1Form2.xlsm
    21.6 KB · Đọc: 0
Upvote 0
Em có tạo 2 form như file đính kèm

Trong Form1 em chọn NV003
View attachment 273809

Làm thế nào để khi bấm vào showForm2 nó hiện
View attachment 273810
Các bác chỉ giúp em cách làm với.
Em đã làm được thì ra là vậy, code trong Form2:
Mã:
Private Sub UserForm_Initialize()
    Me.TextBox1 = UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex, 1)
    Me.TextBox2 = UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex, 2)
End Sub
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom