Tạo check dạng yes/no như thế nào?

Liên hệ QC

trong003

Thành viên chính thức
Tham gia
17/4/08
Bài viết
60
Được thích
19
Nghề nghiệp
NV văn phòng
Chào các bạn!

Mình muốn tạo một Macro như sau: khi quét khối 1 số hàng (chỉ 1 cột), sau đó thực hiện Macro thì những hàng này sẽ được tạo 2 Option button, 1 Group box (nhóm 2 option button này lại với nhau), đồng thời tạo luôn Cell link (cho mỗi nhóm option button) vào các ô được quét khối .

Cảm ơn các bạn.
 

File đính kèm

Dùng sub sau thì tạo được rồi, nhưng link cell chưa gán được, nhờ cao thủ cho ý kiến thêm.
PHP:
Sub CreateOption()
   Dim Clls As Range, Rngs As Range
 
   Set Rngs = Selection
    For Each Clls In Rngs
    With Clls.Offset(0, 1)
 
    ActiveSheet.GroupBoxes.Add(.Left, .Top, .Width, .Height).Select
    Selection.Caption = ""
    ActiveSheet.OptionButtons.Add(.Left + 15, .Top + .Height / 3, 10, 10).Select
    Selection.Caption = ""
    ActiveSheet.OptionButtons.Add.(Left + .Width - 30, .Top + .Height / 4, 10, 10).Select
    Selection.Caption = ""
   ' Clls.Offset(0, 2) = Selection.LinkedCell'
    End With
    Next
End Sub
 
Upvote 0
Cảm ơn bạn ptm0412

Nhưng chủ yếu mình cần là cái vụ cell link, bởi vì có khi mình phải làm vài trăm cái nhóm option button như vậy, nếu sửa bằng tay thì mỏi tay lắm, bạn nghĩ giúp mình nhé (mình không biết lập trình)

Thanks!
 
Upvote 0
Nếu vài trăm cái thì đừng dùng Option button, nói chung là các Object, vì sẽ làm file bị nặng. Có thể dùng Validation 2 giá trị thay thế.
Hoặc dùng đoạn code sau đây, chỉ 1 groupbox có tên Grp1 và 2 OptionButton có tên Optn1 và Optn2, tạo sẵn bằng tay hoặc bằng code. Khi đổi selection thì nguyên nhóm chạy theo.
Dù vậy cũng chưa biết cách gán link cell!
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Clls As Range
Set grp = ActiveSheet.GroupBoxes("grp1")
Set Opt1 = ActiveSheet.OptionButtons("optn1")
Set Opt2 = ActiveSheet.OptionButtons("optn2")
If Selection.Column = 1 Then
Set Clls = Selection
With Clls.Offset(0, 1)
grp.Left = .Left
grp.Top = .Top
grp.Width = .Width
grp.Height = .Height
Opt1.Left = .Left + 10
Opt2.Left = .Left + .Width - 25
Opt1.Top = .Top + (.Height - 10) / 2
Opt2.Top = .Top + (.Height - 10) / 2
End With
End If
End Sub

Nhờ các cao thủ giúp cái link cell với!
 
Upvote 0
Chào các bạn!

Mình muốn tạo một Macro như sau: khi quét khối 1 số hàng (chỉ 1 cột), sau đó thực hiện Macro thì những hàng này sẽ được tạo 2 Option button, 1 Group box (nhóm 2 option button này lại với nhau), đồng thời tạo luôn Cell link (cho mỗi nhóm option button) vào các ô được quét khối .

Cảm ơn các bạn.

Chào Trọng,
Bạn chép đoạn code sau vào Module
PHP:
Sub CreateOption(rng As Range)
Dim i As Long
i = 1
For Each Clls In rng
ActiveSheet.GroupBoxes.Add(Clls.Left, Clls.Top, Clls.Width, Clls.Height).Select
Selection.Characters.Text = "Group" & i
ActiveSheet.OptionButtons.Add(Clls.Left, Clls.Top - 2, Clls.Width, Clls.Height).Select
Selection.Characters.Text = ""
ActiveSheet.OptionButtons.Add(Clls.Left + 20, Clls.Top - 2, Clls.Width, Clls.Height).Select
Selection.Characters.Text = ""
    With Selection
        .Value = xlOff
        .LinkedCell = Cells(Clls.Row, Clls.Column + 1).Address
        .Display3DShading = False
    End With
i = i + 1
Next Clls

End Sub

Sau đó tạo một command button với đoạn code xử lý lúc click nút như sau:

PHP:
Private Sub CommandButton1_Click()
Call CreateOption(Selection)
End Sub

Sau đó chiếu sáng vùng cần tạo groupbox và option (nhớ là chỉ 1 cột và nhiều dòng thôi nhé) rồi click nút chạy thử xem.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh Kiệt.

Nhưng sao kỳ lắm anh ơi, nó cứ tạo cell link vào có 1 ô à (ô cuối cùng của dãy).

Thanks!
 
Upvote 0
Học được Cadafi cái linkedcell, thì ra linkedcell của mình thiếu cái Address!
Nhưng Cadafi ơi, cái linked cell của Cadafi là chung cho mấy chục cái OptionButton luôn.
Cái của mình nếu thêm lệnh gán linked cell thì lại ngon!
Xem file kèm theo, có 2 sheet, 1 sheet tạo nhiều cái, 1 sheet chỉ 1 cái nhưng chạy theo ô chọn bên cỗt A.
 

File đính kèm

Upvote 0
Cái của mình nếu thêm lệnh gán linked cell thì lại ngon!
Xem file kèm theo, có 2 sheet, 1 sheet tạo nhiều cái, 1 sheet chỉ 1 cái nhưng chạy theo ô chọn bên cỗt A.

Hay quá! Như vậy là ok rồi. Trong003 lấy file anh ptm0412 là chuẩn rồi đấy!
Tuy nhiên em chưa hiểu?? Nhìn chung điểm khác biệt giữa code em viết và code anh ptm0412 viết là cái offset. Không biết tại sao??+-+-+-+
 
Upvote 0
Anh ptm0412 ơi như vậy là ngon lành rồi, cảm ơn 2 anh nhiều.
 
Upvote 0
Không phải lỗi ở offset hay không offset, lỗi là ở các Optionbutton kích thước lớn quá không nằm gọn trong các groupbox mà nằm đè lên 2 hoặc 3 cái groupbox. Chắc Excel không hiểu nó thuộc Group nào thôi thì tống vào 1 Big Group luôn.
Code của mình mà không chỉnh kích thước dòng trước cũng sẽ bị. Vậy Trong chú ý cái này nha! nhớ chỉnh độ cao dòng trước khi làm. Còn nếu xài 1 cái di động thì khỏi.
Nếu không muốn chỉnh trước độ cao dòng thì thêm câu này vào dưới With

Mã:
.RowHeight = 20
 
Lần chỉnh sửa cuối:
Upvote 0
Đúng rồi, hồi nãy khi em thử mà nếu cell nhỏ quá sẽ không đúng, mấy cái nào lọt ra ngoài thì nó xem như không thuộc về Group box đó.
 
Upvote 0
Không phải lỗi ở offset hay không offset, lỗi là ở các Optionbutton kích thước lớn quá không nằm gọn trong các groupbox mà nằm đè lên 2 hoặc 3 cái groupbox. Chắc Excel không hiểu nó thuộc Group nào thôi thì tống vào 1 Big Group luôn.
Code của mình mà không chỉnh kích thước dòng trước cũng sẽ bị. Vậy Trong chú ý cái này nha! nhớ chỉnh độ cao dòng trước khi làm. Còn nếu xài 1 cái di động thì khỏi.

Như vậy học được thêm một kinh nghiệm xử lý object nữa. Thanks.
 
Upvote 0
Web KT

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

Back
Top Bottom