Giúp đỡ cách chọn nhiều lựa chọn trong Drop list trên Excel !

Liên hệ QC

tuyennk831110

Thành viên mới
Tham gia
3/4/20
Bài viết
4
Được thích
1
Mình đang có 1 file như đính kèm. Hiện mình đã làm drop list để có thể chọn các lựa chọn trong danh sách. Tuy nhiên mình muốn lựa chọn được nhiều option trong danh sách và cách nhau bởi dấu phẩy mà chưa biết cách làm. Nhờ các cao thủ trong diễn đàn chỉ giúp mình hoặc có thể thì viết giúp mình VBA để có thể thực hiện mong muốn này với !!!
Cụ thể trong file đính kèm, mình muốn từ ô D2 đến D7 khi chọn Option1 thì trong ô hiển thị Option1, khi chọn tiếp Option2 thì trong ô hiển thị tiếp Option2 và cách nhau dấu phẩy, tương ứng như vậy với các Option khác.
Rất mong các cao thủ giúp đỡ! MÌnh xin cảm ơn !
 

File đính kèm

Mình đang có 1 file như đính kèm. Hiện mình đã làm drop list để có thể chọn các lựa chọn trong danh sách. Tuy nhiên mình muốn lựa chọn được nhiều option trong danh sách và cách nhau bởi dấu phẩy mà chưa biết cách làm. Nhờ các cao thủ trong diễn đàn chỉ giúp mình hoặc có thể thì viết giúp mình VBA để có thể thực hiện mong muốn này với !!!
Cụ thể trong file đính kèm, mình muốn từ ô D2 đến D7 khi chọn Option1 thì trong ô hiển thị Option1, khi chọn tiếp Option2 thì trong ô hiển thị tiếp Option2 và cách nhau dấu phẩy, tương ứng như vậy với các Option khác.
Rất mong các cao thủ giúp đỡ! MÌnh xin cảm ơn !
Góp ý cho bạn:
1/ Nên chuyển sang VBA và nhập liệu bình thường mỗi trạm là 1 đơn vị.
2/ Khi cần gộp thì Copy sang sheet khác rồi chạy code nó sẽ làm nhiệm vụ gộp 1 lần.
 
Upvote 0
Góp ý cho bạn:
1/ Nên chuyển sang VBA và nhập liệu bình thường mỗi trạm là 1 đơn vị.
2/ Khi cần gộp thì Copy sang sheet khác rồi chạy code nó sẽ làm nhiệm vụ gộp 1 lần.
Cảm ơn bạn đã góp ý nhưng ý mình là muốn chọn được nhiều option trong drop list vì hiện excel chỉ cho chọn 1 option. Mình nghĩ chắc chỉ code VBA mới làm được, nhưng chưa biết viết code thế nào. Nếu bạn nào code được thì giúp mình với, hiện mình đang cần gấp. Mình xin cảm ơn !
 
Upvote 0
Mình đang có 1 file như đính kèm. Hiện mình đã làm drop list để có thể chọn các lựa chọn trong danh sách. Tuy nhiên mình muốn lựa chọn được nhiều option trong danh sách và cách nhau bởi dấu phẩy mà chưa biết cách làm. Nhờ các cao thủ trong diễn đàn chỉ giúp mình hoặc có thể thì viết giúp mình VBA để có thể thực hiện mong muốn này với !!!
Cụ thể trong file đính kèm, mình muốn từ ô D2 đến D7 khi chọn Option1 thì trong ô hiển thị Option1, khi chọn tiếp Option2 thì trong ô hiển thị tiếp Option2 và cách nhau dấu phẩy, tương ứng như vậy với các Option khác.
Rất mong các cao thủ giúp đỡ! MÌnh xin cảm ơn !
Copy code vào sheet1
Mã:
Dim tmp As String
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 4 Then
    If Target.Count = 1 Then
      Application.EnableEvents = False
      If Target.Value = Empty Then tmp = Empty
      If tmp <> Empty Then
        If InStr(1, tmp, Target.Value) = 0 Then
          Target.Value = tmp & "," & Target.Value
        Else
          Target.Value = tmp
        End If
      End If
      tmp = Target.Value
      Application.EnableEvents = True
    End If
  End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 4 Then
    If Target.Count = 1 Then
      tmp = Target.Value
    End If
  End If
End Sub
 
Upvote 0
Copy code vào sheet1
Mã:
Dim tmp As String
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 4 Then
    If Target.Count = 1 Then
      Application.EnableEvents = False
      If Target.Value = Empty Then tmp = Empty
      If tmp <> Empty Then
        If InStr(1, tmp, Target.Value) = 0 Then
          Target.Value = tmp & "," & Target.Value
        Else
          Target.Value = tmp
        End If
      End If
      tmp = Target.Value
      Application.EnableEvents = True
    End If
  End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 4 Then
    If Target.Count = 1 Then
      tmp = Target.Value
    End If
  End If
End Sub
Cảm ơn bạn HieuCD, code của bạn chạy rất đúng ý của mình!
Nhân tiện bạn cho mình hỏi thêm 1 câu nữa nhé. Giờ mình thêm 1 cột Kích thước phòng máy vào trong file đính kèm (Cột E) và mình muốn nhập dữ liệu cột này chỉ theo định dạng là Chiều_Dài x Chiều_Rộng (ví dụ 3x7), các định dạng khác không hợp lệ. Không biết có cách nào không hay là phải viết code? Nhờ bạn chỉ giúp mình nhé.
Rất cảm ơn bạn nhiều !
 

File đính kèm

Upvote 0
Cảm ơn bạn HieuCD, code của bạn chạy rất đúng ý của mình!
Nhân tiện bạn cho mình hỏi thêm 1 câu nữa nhé. Giờ mình thêm 1 cột Kích thước phòng máy vào trong file đính kèm (Cột E) và mình muốn nhập dữ liệu cột này chỉ theo định dạng là Chiều_Dài x Chiều_Rộng (ví dụ 3x7), các định dạng khác không hợp lệ. Không biết có cách nào không hay là phải viết code? Nhờ bạn chỉ giúp mình nhé.
Rất cảm ơn bạn nhiều !
Chỉnh lại code
Mã:
Dim tmp As String

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim bTest As Boolean, Tar, S
  Application.EnableEvents = False
  If Target.Row > 1 And Target.Count = 1 Then
    Tar = Target.Value
    If Target.Column = 4 Then
      If Tar = Empty Then tmp = Empty
      If tmp <> Empty Then
        If InStr(1, tmp, Tar) = 0 Then
          Target.Value = tmp & "," & Tar
        Else
          Target.Value = tmp
        End If
      End If
      tmp = Target.Value
    ElseIf Target.Column = 5 Then
      If Tar <> Empty Then
        Tar = LCase(Tar)
        If InStr(1, Tar, "x") > 0 Then
          S = Split(Tar, "x")
          If UBound(S) = 1 Then bTest = S(0) <> Empty And IsNumeric(S(0)) And _
                S(1) <> Empty And IsNumeric(S(1)) And Val(S(0)) >= Val(S(1))
        End If
      End If
      If bTest Then
        Target.Value = Tar
      Else
        MsgBox ("Sai roi !!!" & Chr(10) & "Phai nhap theo dang:  Dai x Rong")
        Target.Value = Empty: Target.Select
      End If
    End If
  End If
  Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 4 Then
    If Target.Count = 1 Then
      tmp = Target.Value
    End If
  End If
End Sub
 
Upvote 0
Chỉnh lại code
Mã:
Dim tmp As String

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim bTest As Boolean, Tar, S
  Application.EnableEvents = False
  If Target.Row > 1 And Target.Count = 1 Then
    Tar = Target.Value
    If Target.Column = 4 Then
      If Tar = Empty Then tmp = Empty
      If tmp <> Empty Then
        If InStr(1, tmp, Tar) = 0 Then
          Target.Value = tmp & "," & Tar
        Else
          Target.Value = tmp
        End If
      End If
      tmp = Target.Value
    ElseIf Target.Column = 5 Then
      If Tar <> Empty Then
        Tar = LCase(Tar)
        If InStr(1, Tar, "x") > 0 Then
          S = Split(Tar, "x")
          If UBound(S) = 1 Then bTest = S(0) <> Empty And IsNumeric(S(0)) And _
                S(1) <> Empty And IsNumeric(S(1)) And Val(S(0)) >= Val(S(1))
        End If
      End If
      If bTest Then
        Target.Value = Tar
      Else
        MsgBox ("Sai roi !!!" & Chr(10) & "Phai nhap theo dang:  Dai x Rong")
        Target.Value = Empty: Target.Select
      End If
    End If
  End If
  Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 4 Then
    If Target.Count = 1 Then
      tmp = Target.Value
    End If
  End If
End Sub
Cảm ơn bạn HieuCD! Code bạn gửi rất OK, tuy có 1 chỗ là không nhất thiết phải có điều kiện Chiều Dài >= Chiều Rộng, mình đã chỉnh lại code.
Nhưng mình mới phát hiện 1 bug là nếu ở cột 4 mình copy dữ liệu với định dạng không mong muốn từ sheet khác rồi paste vào cột 4 thì nó vẫn cho paste bình thường. Vậy nhờ bạn HieuCD chỉ chỉ giúp Macro mà ngăn ko cho copy dữ liệu từ nơi khác paste vào mà chỉ cho phép lựa chọn trong Drop List nhé.
 
Upvote 0
Web KT

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

Back
Top Bottom