Viết lệnh trong Option group

Liên hệ QC

phuyen89

Thành viên tích cực
Tham gia
20/11/08
Bài viết
875
Được thích
341
Nghề nghiệp
Student
Chào mọi người em mày mò tập viết lệnh trong Option group.Em nghĩ nó cũng giống với Access nên em làm thế này.Mà khi chạy nó sai bét.Anh chị xem lại và chỉnh sửa giùm,do kiến thức còn non yếu,anh chị đừng chê cười nghen!
PHP:
Private Sub cmdChon_Click()
If opt1 = 1 Then
MsgBox "Ban chon nut 1"
ElseIf opt = 2 Then
MsgBox "Ban chon nut 2"
ElseIf opt = 3 Then
MsgBox "Ban chon nut 3"
Else
MsgBox "Ban khong chon nut nao"
End If
End Sub
Còn file em đính kèm:
 

File đính kèm

Chào mọi người em mày mò tập viết lệnh trong Option group.Em nghĩ nó cũng giống với Access nên em làm thế này.Mà khi chạy nó sai bét.Anh chị xem lại và chỉnh sửa giùm,do kiến thức còn non yếu,anh chị đừng chê cười nghen!
PHP:
Private Sub cmdChon_Click()
If opt1 = 1 Then
MsgBox "Ban chon nut 1"
ElseIf opt = 2 Then
MsgBox "Ban chon nut 2"
ElseIf opt = 3 Then
MsgBox "Ban chon nut 3"
Else
MsgBox "Ban khong chon nut nao"
End If
End Sub
Còn file em đính kèm:

Bạn ghi sai tùm lum hết, tên của nút Option bạn cũng ghi không đúng nữa làm sao mà chạy code được?

PHP:
Private Sub cmdChon_Click()
If opt1 Then
MsgBox "Ban chon nut 1"
ElseIf opt2 Then
MsgBox "Ban chon nut 2"
ElseIf opt3 Then
MsgBox "Ban chon nut 3"
Else
MsgBox "Ban khong chon nut nao"
End If
End Sub
 
Upvote 0
Bạn ghi sai tùm lum hết, tên của nút Option bạn cũng ghi không đúng nữa làm sao mà chạy code được?

PHP:
Private Sub cmdChon_Click()
If opt1 Then
MsgBox "Ban chon nut 1"
ElseIf opt2 Then
MsgBox "Ban chon nut 2"
ElseIf opt3 Then
MsgBox "Ban chon nut 3"
Else
MsgBox "Ban khong chon nut nao"
End If
End Sub
Khi mà không dùng Option button mà dùng checkbox cũng viết lệnh tuơn tự phải không bác Minhthien321.bac mở rộng cho em chút ít với
 
Upvote 0
Thì bạn copy code dán vào Form thôi mà!
Em mới phat hiện ra rằng cái Check box nó có thê chọ 3 nút một lượt luôn chú không phải mỗi làn chỉ chọn 1 nút bác minhthien321 ơi.Như thế thì khi chọn cả 2 nút thì phải thực thi 2 hành động minhthien321 ơi.Hay là phai them and khi mà ta chon 2 nút
 
Upvote 0
Em mới phat hiện ra rằng cái Check box nó có thê chọ 3 nút một lượt luôn chú không phải mỗi làn chỉ chọn 1 nút bác minhthien321 ơi.Như thế thì khi chọn cả 2 nút thì phải thực thi 2 hành động minhthien321 ơi.Hay là phai them and khi mà ta chon 2 nút

Chính vì đặc điểm này nên mới có Checkbox và Optionbutton chứ! Option chỉ được chọn 1 trong tất cả, còn Checkbox có thể chọn 1 hoặc tất cả đều được và khi Option đã chọn rồi không thể bỏ được, còn Checkbox thì chọn rồi có thể không chọn.
 
Upvote 0
Chính vì đặc điểm này nên mới có Checkbox và Optionbutton chứ! Option chỉ được chọn 1 trong tất cả, còn Checkbox có thể chọn 1 hoặc tất cả đều được và khi Option đã chọn rồi không thể bỏ được, còn Checkbox thì chọn rồi có thể không chọn.
The thì anh hương dẫn về cách cơ bản viết CODE trong cái checkbox này đi được không anh
 
Upvote 0
The thì anh hương dẫn về cách cơ bản viết CODE trong cái checkbox này đi được không anh

Bạn muốn yêu cầu gì thì nói rõ ra chứ ứng dụng với Check thì bao la ai mà biết được!

Đại loại như với 1 check và 1 option, bạn xem rồi tùy biến thôi.
PHP:
Private Sub cmdChon_Click()
If opt1 And CheckBox1 Then
  MsgBox "Ban chon nut 1 và checkbox1"
ElseIf opt1 Then
  MsgBox "Ban chon nut 1"
ElseIf CheckBox1 Then
  MsgBox "Ban chon CheckBox1"
Else
  MsgBox "Ban khong chon nut nao"
End If
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào mọi người em mày mò tập viết lệnh trong Option group.Em nghĩ nó cũng giống với Access nên em làm thế này.Mà khi chạy nó sai bét.Anh chị xem lại và chỉnh sửa giùm,do kiến thức còn non yếu,anh chị đừng chê cười nghen!
PHP:
Private Sub cmdChon_Click()
If opt1 = 1 Then
MsgBox "Ban chon nut 1"
ElseIf opt = 2 Then
MsgBox "Ban chon nut 2"
ElseIf opt = 3 Then
MsgBox "Ban chon nut 3"
Else
MsgBox "Ban khong chon nut nao"
End If
End Sub
Còn file em đính kèm:
Giả sử có 20 cái OptionButton, chẳng lẽ bạn viết 20 dòng lệnh sao?
Dùng vòng lập hay hơn:
PHP:
Private Sub cmdChon_Click()
  Dim OB As Control
  For Each OB In A.Controls
    If OB.Value = True Then MsgBox "Ban da chon " & OB.Caption
  Next
End Sub
(Trong file bạn đã đặt tên cho Frame1A)
 

File đính kèm

Upvote 0
Giả sử có 20 cái OptionButton, chẳng lẽ bạn viết 20 dòng lệnh sao?
Dùng vòng lập hay hơn:
PHP:
Private Sub cmdChon_Click()
  Dim OB As Control
  For Each OB In A.Controls
    If OB.Value = True Then MsgBox "Ban da chon " & OB.Caption
  Next
End Sub
(Trong file bạn đã đặt tên cho Frame1A)

Cảm ơn Thầy! Điểm chung chỉ là Msgbox, nhưng nếu thật sự là lệnh, và mỗi lệnh khác nhau thì cũng phải viết tất cả các lệnh chứ Thầy? Bởi chúng không có điểm chung thì sao? Làm sao làm vòng lặp được?
 
Upvote 0
Cảm ơn Thầy! Điểm chung chỉ là Msgbox, nhưng nếu thật sự là lệnh, và mỗi lệnh khác nhau thì cũng phải viết tất cả các lệnh chứ Thầy? Bởi chúng không có điểm chung thì sao? Làm sao làm vòng lặp được?
Đây chính là điểm tinh tế khi ta thiết kế UserForm --> Đã cho tất cả các OptionButton vào chung 1 Group thì đương nhiên chúng phải có đặc điểm gì đó chung chứ, đúng không
Ví dụ:
- Chọn OB1, chạy Sub Test1
- Chọn OB2, chạy Sub Test2
.....
- Chạy OBn, chạy Sub Testn
....
Đấy là điểm chung rồi ---> Và ta hoàn toàn có thể viết 1 vòng lập cho trường hợp này
(lý nào chung 1 Group mà trớt quớt nhau, thế thì Group làm gì)
 
Upvote 0
Đây chính là điểm tinh tế khi ta thiết kế UserForm --> Đã cho tất cả các OptionButton vào chung 1 Group thì đương nhiên chúng phải có đặc điểm gì đó chung chứ, đúng không
Ví dụ:
- Chọn OB1, chạy Sub Test1
- Chọn OB2, chạy Sub Test2
.....
- Chạy OBn, chạy Sub Testn
....
Đấy là điểm chung rồi ---> Và ta hoàn toàn có thể viết 1 vòng lập cho trường hợp này
(lý nào chung 1 Group mà trớt quớt nhau, thế thì Group làm gì)

Dạ, em cám ơn Thầy. Giờ em đã học thêm 1 điều nữa về tính logic!
 
Upvote 0
Ý mà Thầy ơi, em dốt về vòng lặp lắm, thí dụ học của Thầy được các Controls, nhưng làm sao gọi được các Action hả Thầy? Trong trường hợp này phải làm như thế nào? Xem File!
 

File đính kèm

Upvote 0
Ý mà Thầy ơi, em dốt về vòng lặp lắm, thí dụ học của Thầy được các Controls, nhưng làm sao gọi được các Action hả Thầy? Trong trường hợp này phải làm như thế nào? Xem File!
- Đưa các sub Test1, Test2, Test3 về cùng 1 Module
- Viết code cho UserForm
PHP:
Private Sub cmdChon_Click()
  Dim OB As Control
  For Each OB In A.Controls
    If OB.Value = True Then Run "Test" & Right(OB.Caption, 1)
  Next
End Sub
Đại khái thế, tùy trường hợp mà viết thôi
 
Upvote 0
Nói thêm 1 chút (kinh nghiệm thiết kế form): Có trường hợp người ta sẽ đặt Caption của OptionButton trùng với tên Sub, vậy lại càng dể viết
Ví dụ:
- Caption cho Opt1 là Test1
- Caption cho Opt2 là Test2
- Caption cho Opt3 là Test3
Vậy ta viết code cho UserForm như sau:
PHP:
Private Sub cmdChon_Click()
  Dim OB As Control
  For Each OB In A.Controls
    If OB.Value Then Run OB.Caption
  Next
End Sub
Quá gọn ---> Đã cho vào 1 Group thì ta phải làm gì đó để nó có "điểm chung" chứ, đúng không?
 
Upvote 0
Nói thêm 1 chút (kinh nghiệm thiết kế form): Có trường hợp người ta sẽ đặt Caption của OptionButton trùng với tên Sub, vậy lại càng dể viết
Ví dụ:
- Caption cho Opt1 là Test1
- Caption cho Opt2 là Test2
- Caption cho Opt3 là Test3
Vậy ta viết code cho UserForm như sau:
PHP:
Private Sub cmdChon_Click()
  Dim OB As Control
  For Each OB In A.Controls
    If OB.Value Then Run OB.Caption
  Next
End Sub
Quá gọn ---> Đã cho vào 1 Group thì ta phải làm gì đó để nó có "điểm chung" chứ, đúng không?

Đúng là quá tuyệt cú mèo! Chỉ một điều duy nhất là nếu OB.Caption bằng tiếng Việt thì thua Thấy hen! Cũng rắc rối chỗ là không thể dùng lệnh chung 1 Form được rồi, phải để qua Module mà để ở đây thì những thao tác trực tiếp trên Form thì hơi bất tiện, ví dụ phải đặt tên Form:

Sub Test1()
With UserForm1
.Textbox3 = .Textbox1 + .Textbox2
End with
End Sub
 
Upvote 0
Đúng là quá tuyệt cú mèo! Chỉ một điều duy nhất là nếu OB.Caption bằng tiếng Việt thì thua Thấy hen! Cũng rắc rối chỗ là không thể dùng lệnh chung 1 Form được rồi, phải để qua Module mà để ở đây thì những thao tác trực tiếp trên Form thì hơi bất tiện, ví dụ phải đặt tên Form:

Sub Test1()
With UserForm1
.Textbox3 = .Textbox1 + .Textbox2
End with
End Sub
Thì khi ấy đúng lấy theo Caption mà lấy theo name... ta đặt tên cho OB là Test1, Test2 ---> OK chứ
 
Upvote 0
Thì khi ấy đúng lấy theo Caption mà lấy theo name... ta đặt tên cho OB là Test1, Test2 ---> OK chứ

Em lại hỏi Thầy nữa nè! Tại sao em bẫy lỗi nếu không chọn điều kiện nào thì thông báo, thế nhưng nó lại báo liên tục theo số OB có trong A. Khắc phục ra sao vậy Thầy?+-+-+-+
PHP:
Private Sub cmdChon_Click()
  Dim OB As Control
  For Each OB In A.Controls
    If OB.Value Then Run OB.Name Else MsgBox "Ban phai chon 1 dieu kien!"
  Next
End Sub
 
Upvote 0
Tại sao em bẫy lỗi nếu không chọn điều kiện nào thì thông báo, thế nhưng nó lại báo liên tục theo số OB có trong A. Khắc phục ra sao vậy?
Câu này:
PHP:
 If OB.Value Then Run OB.Name Else MsgBox "Ban phai chon 1 dieu kien!"

Đặt trong vòng For, nghĩa là mỗi OB đều mỗi xét xem có chọn không, nếu chọn thì chạy 1 đoạn code, nếu không chọn thì báo lỗi.
Vậy trong 20 cái OB sẽ có tới ít nhất 19 cái không chọn, thì báo lỗi ít nhất 19 lần, không có gì lạ cả.

Vậy có 2 cách:
1. Dùng 1 biến đếm, đếm xem có bao nhiêu cái OB không chọn, nếu biến này bằng với A.Controls.Count thì mới báo lỗi.
PHP:
Private Sub cmdChon_Click()
  Dim OB As Control, Dem As Long
 For Each OB In A.Controls
    If OB.Value Then Run OB.Name Else Dem = Dem +1
  Next
If Dem = A.Controls.Count Then MsgBox "Ban phai chon 1 dieu kien!"
End Sub
2. Dùng 1 biến boolean, nếu không chọn thì giữ nguyên True, có 1 cái chọn thì đổi thành False. Cuối cùng vẫn còn True thì báo lỗi.

PHP:
Private Sub cmdChon_Click()
  Dim OB As Control, Loi As Boolean
  Loi = True
 For Each OB In A.Controls
    If OB.Value Then        Run OB.Name :  Loi = False
 Next
If Loi Then MsgBox "Ban phai chon 1 dieu kien!"
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn Thầy MỸ nhiều lắm ạ! Thầy ơi, theo như 2 cách của Thầy em đều thấy chạy rất tốt, nhưng cho em hỏi với kinh nghiệm của Thầy thì nên chạy theo phương án nào là tốt nhất ạ? Cách 1 hay cách 2?
(Em nghĩ là cách 2 của Thầy)
 
Upvote 0
Web KT

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

Back
Top Bottom