Nhờ Anh Chị giúp đỡ em File làm List Box (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Hữu_Nghĩa

Thành viên mới
Tham gia
2/8/21
Bài viết
0
Được thích
3
Làm Thế Nào Để Tạo Danh Sách Thả Xuống Với Nhiều Hộp Kiểm Trong Excel phụ thuộc 1 biến khác trong VBA
ví dụ : khi mình chọn Cell Tên mẫu thì có 4 mục để chọn, tiếp khi chọn Cell Phương pháp thì sẽ link theo tên có trong mục Tên mẫu sẽ xổ xuống nhìu ô để chọn.
Ví dụ rõ hơn là: khi chọnô Tên mẫu là Vật liệu_RoHS thìô phương pháp sẽ xổ xuống để chọn được 2 hay nhìu dòng.
file 1.JPG
file 2.JPG
 

File đính kèm

Bạn xem file nhé !

Đây là code VBA sử dụng . Mình đặt 1 name mới là LstDV
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C2]) Is Nothing Then
Dim fStr As String, fRng As Range, AddressOfName As String
fStr = Sheet1.Range("C2").Value
With Sheet3
Set fRng = .Range(.[B2], .[B2].End(xlToRight)).Find(fStr, , xlFormulas, xlWhole)
If Not fRng Is Nothing Then
AddressOfName = "='" & .Name & "'!" & .Range(fRng.Offset(1), fRng.End(xlDown)).Address
ThisWorkbook.names.Item("LstDV").RefersTo = AddressOfName
Sheet1.[C3].ClearContents
Else
Exit Sub
End If
End With
End If
End Sub
 

File đính kèm

Làm Thế Nào Để Tạo Danh Sách Thả Xuống Với Nhiều Hộp Kiểm Trong Excel phụ thuộc 1 biến khác trong VBA
ví dụ : khi mình chọn Cell Tên mẫu thì có 4 mục để chọn, tiếp khi chọn Cell Phương pháp thì sẽ link theo tên có trong mục Tên mẫu sẽ xổ xuống nhìu ô để chọn.
Ví dụ rõ hơn là: khi chọnô Tên mẫu là Vật liệu_RoHS thìô phương pháp sẽ xổ xuống để chọn được 2 hay nhìu dòng.
View attachment 263475
View attachment 263477
Thêm một cách khác cho bạn rộng đường lựa chọn
 

File đính kèm

Nếu là mình thì chỉ cần thêm 1 Validation nữa là được rồi
 

File đính kèm

cảm ơn Anh nhiều lắm ạ, hay qua Anh, nhưng Anh ơi làm sao trong ô Phương pháp mình có thể tick chọn được 2 dòng để nó hiển thị như vậy ạhinh 3.JPG
Bài đã được tự động gộp:

Thêm một cách khác cho bạn rộng đường lựa chọn
cảm ơn Bạn nhiều nhé. bạn ơi giúp mình này tí với, làm sao trong ô Phương pháp mình chọn được nhiều dòng ( ý là chọn được nhìu có dấu tick ak)4.JPG
 
Lần chỉnh sửa cuối:
cảm ơn Anh nhiều lắm ạ, hay qua Anh, nhưng Anh ơi làm sao trong ô Phương pháp mình có thể tick chọn được 2 dòng để nó hiển thị như vậy ạView attachment 263497
Bài đã được tự động gộp:


cảm ơn Bạn nhiều nhé. bạn ơi giúp mình này tí với, làm sao trong ô Phương pháp mình chọn được nhiều dòng ( ý là chọn được nhìu có dấu tick ak)View attachment 263498

bạn thay code sau trong sheet1
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C2]) Is Nothing Then
    Dim Arr As Variant, fStr As String, fRng As Range, AddressOfName As String
    fStr = Sheet1.Range("C2").Value
    With Sheet3
        Set fRng = .Range(.[B2], .[B2].End(xlToRight)).Find(fStr, , xlFormulas, xlWhole)
        If Not fRng Is Nothing Then
           AddressOfName = "='" & .Name & "'!" & .Range(fRng.Offset(1), fRng.End(xlDown)).Address
           ThisWorkbook.names.Item("LstDV").RefersTo = AddressOfName
           Sheet1.[C3].ClearContents
           Sheet1.ListBox1.Visible = True
           Sheet1.ListBox1.ListFillRange = AddressOfName
        Else
        Sheet1.ListBox1.Visible = False
           Exit Sub
        End If
    End With
    Else
        Sheet1.ListBox1.Visible = False
End If
End Sub
Private Sub ListBox1_Click()
    Sheet1.Range("C3") = Sheet1.Range("C3") & Chr(10) & Sheet1.ListBox1.Value
    Sheet1.ListBox1.Visible = True
End Sub
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then Sheet1.ListBox1.Visible = False
End Sub
Từ đây bạn có thể chọn nhiều dòng và ô C3 cũng được,
muốn Listbox ẩn đi thì nhấn đúp chuột vào listbox và gõ Enter
 
Lần chỉnh sửa cuối:
bạn thay code sau trong sheet1
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C2]) Is Nothing Then
    Dim Arr As Variant, fStr As String, fRng As Range, AddressOfName As String
    fStr = Sheet1.Range("C2").Value
    With Sheet3
        Set fRng = .Range(.[B2], .[B2].End(xlToRight)).Find(fStr, , xlFormulas, xlWhole)
        If Not fRng Is Nothing Then
           AddressOfName = "='" & .Name & "'!" & .Range(fRng.Offset(1), fRng.End(xlDown)).Address
           ThisWorkbook.names.Item("LstDV").RefersTo = AddressOfName
           Sheet1.[C3].ClearContents
           Sheet1.ListBox1.Visible = True
           Sheet1.ListBox1.ListFillRange = AddressOfName
        Else
        Sheet1.ListBox1.Visible = False
           Exit Sub
        End If
    End With
    Else
        Sheet1.ListBox1.Visible = False
End If
End Sub
Private Sub ListBox1_Click()
    Sheet1.Range("C3") = Sheet1.Range("C3") & Chr(10) & Sheet1.ListBox1.Value
    Sheet1.ListBox1.Visible = True
End Sub
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then Sheet1.ListBox1.Visible = False
End Sub
Từ đây bạn có thể chọn nhiều dòng và ô C3 cũng được,
muốn Listbox ẩn đi thì nhấn đúp chuột vào listbox và gõ Enter
hi. cảm ơn bạn nhiều nhé. chúc sức khỏe bạn.Thank
 
Web KT

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

Back
Top Bottom