Cần giúp đỡ: gán giá trị cho label (1 người xem)

Liên hệ QC

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

skullrock

Thành viên chính thức
Tham gia
5/12/08
Bài viết
70
Được thích
1
Xin lỗi mọi người, em không bik diễn tả vấn đề này cụ thể thế nào, mọi người xem dùm file đính kèm.
Dữ liệu của em thuộc từng nhóm, khi dùng ComboBox lọc ra 1 sản phẩm nào đó, em muốn lấy luôn tên nhóm sản phẩm đó gán vào cho 1 Label hay TextBox nào đó.
Em không rành nhiều về ngôn ngữ VB, mong mọi người chỉ giúp.
Cám ơn.
 
File của bạn có viruts không tải được
 
Upvote 0
Xin lỗi mọi người, em không bik diễn tả vấn đề này cụ thể thế nào, mọi người xem dùm file đính kèm.
Dữ liệu của em thuộc từng nhóm, khi dùng ComboBox lọc ra 1 sản phẩm nào đó, em muốn lấy luôn tên nhóm sản phẩm đó gán vào cho 1 Label hay TextBox nào đó.
Em không rành nhiều về ngôn ngữ VB, mong mọi người chỉ giúp.
Cám ơn.

Nếu là tôi, tôi sẽ thêm 1 cột nữa ghi tên nhóm hàng, rồi cũng dùng columns của ComboBox gán cho label.
 
Upvote 0
Xin lỗi mọi người, em không bik diễn tả vấn đề này cụ thể thế nào, mọi người xem dùm file đính kèm.
Dữ liệu của em thuộc từng nhóm, khi dùng ComboBox lọc ra 1 sản phẩm nào đó, em muốn lấy luôn tên nhóm sản phẩm đó gán vào cho 1 Label hay TextBox nào đó.
Em không rành nhiều về ngôn ngữ VB, mong mọi người chỉ giúp.
Cám ơn.
Với cấu trúc dữ liệu như trong file thì bạn thêm câu lệnh này vào trong Sub ComboBox1_Change:
PHP:
Label4 = Sheets("Tong Hop").[B:B].Find(ComboBox1, LookAt:=xlWhole).End(xlUp).Offset(-1, 1)
Tất nhiên cần có bẫy lỗi để tránh những trường hợp không mong muốn.
 
Upvote 0
Nếu là tôi, tôi sẽ thêm 1 cột nữa ghi tên nhóm hàng, rồi cũng dùng columns của ComboBox gán cho label.
Cách này thì mình làm đc, nhưng đây là file test, file dữ liệu của mình dữ liệu nhiều lắm, thêm 1 cột là thêm rất nhiều, nên mình hạn chế, với lại không muốn phá vỡ cấu trúc file gốc. Thanks.
 
Upvote 0
Với cấu trúc dữ liệu như trong file thì bạn thêm câu lệnh này vào trong Sub ComboBox1_Change:
PHP:
Label4 = Sheets("Tong Hop").[B:B].Find(ComboBox1, LookAt:=xlWhole).End(xlUp).Offset(-1, 1)
Tất nhiên cần có bẫy lỗi để tránh những trường hợp không mong muốn.
Code này gần ok rồi, chạy trên file test vẫn bị lỗi ở sản phẩm đầu tiên mỗi nhóm, bạn xem giúp lại.
Khi đem áp vào file chính của mình, không chạy đc, bị lỗi Debug.
Thanks.
 
Upvote 0
Code này gần ok rồi, chạy trên file test vẫn bị lỗi ở sản phẩm đầu tiên mỗi nhóm, bạn xem giúp lại.
Khi đem áp vào file chính của mình, không chạy đc, bị lỗi Debug.
Thanks.

Bạn thử Insert thêm 1 hàng nằm giữa tiêu đề cột với tên nhóm, không ghi gì ở hàng này, rồi bạn ẩn hàng này đi, tôi nghĩ sẽ ổn đó.

Nhưng với CSDL lớn mà cấu trúc như file của bạn, tôi nghĩ rằng nó chẳng hợp lý tí nào cả, bạn thử với Access hay FoxPro xem thử có thể làm được cái tiêu đề nhóm hàng cho các mặt hàng không thì biết liền!
 
Upvote 0
Code này gần ok rồi, chạy trên file test vẫn bị lỗi ở sản phẩm đầu tiên mỗi nhóm, bạn xem giúp lại.
Khi đem áp vào file chính của mình, không chạy đc, bị lỗi Debug.
Thanks.
Sửa lại code như này vậy:
[GPECODE=vb]Private Sub ComboBox1_Change()
Dim Rng As Range
If ComboBox1 = "" Then
Label4 = "": TextBox1 = "": TextBox2 = ""
Else
Set Rng = Sheets("Tong Hop").[B:B].Find(ComboBox1, LookAt:=xlWhole)
If Rng.Offset(-1) = "" Then
Label4 = Rng.Offset(-1, 1)
Else
Label4 = Rng.End(xlUp).Offset(-1, 1)
End If
TextBox1 = ComboBox1.Column(1)
TextBox2 = ComboBox1.Column(2)
End If
End Sub[/GPECODE]
Tôi sửa lại một chút về code trên Form. Bạn tham khảo trong file nhé.
Cũng mong bạn tham khảo thêm ý kiến của anh Nghĩa ở 2 bài trên. Tôi nghĩ đó là ý kiến đáng tham khảo khi CSDL lớn và nhu cầu khai thác dữ liệu nhiều hơn việc tìm kiếm.
 

File đính kèm

Upvote 0
Vâng cảm ơn 2 anh, tại đây là file có sẵn của công ty sử dụng trc giờ, em lập thêm form để phục vụ việc tra cứu dữ liệu nhìn gọn gàng hơn.
 
Upvote 0
Sửa lại code như này vậy:
[GPECODE=vb]Private Sub ComboBox1_Change()
Dim Rng As Range
If ComboBox1 = "" Then
Label4 = "": TextBox1 = "": TextBox2 = ""
Else
Set Rng = Sheets("Tong Hop").[B:B].Find(ComboBox1, LookAt:=xlWhole)
If Rng.Offset(-1) = "" Then
Label4 = Rng.Offset(-1, 1)
Else
Label4 = Rng.End(xlUp).Offset(-1, 1)
End If
TextBox1 = ComboBox1.Column(1)
TextBox2 = ComboBox1.Column(2)
End If
End Sub[/GPECODE]
Tôi sửa lại một chút về code trên Form. Bạn tham khảo trong file nhé.
Cũng mong bạn tham khảo thêm ý kiến của anh Nghĩa ở 2 bài trên. Tôi nghĩ đó là ý kiến đáng tham khảo khi CSDL lớn và nhu cầu khai thác dữ liệu nhiều hơn việc tìm kiếm.

Cho em hỏi thêm về code này, em áp vào file dữ liệu lớn của em, nó chạy ok rồi. Em save lại. Nhưng khi tắt ẽxcel mở lại thì nó báo lỗi tại dòng
Mã:
If Rng.Offset(-1) = "" Then
Em thử lại vài lần, mỗi lần chạy ok thì khi tắt ẽxcel mở lại thì bị lỗi trên.
Mong chỉ giúp.
 
Upvote 0
Cho em hỏi thêm về code này, em áp vào file dữ liệu lớn của em, nó chạy ok rồi. Em save lại. Nhưng khi tắt ẽxcel mở lại thì nó báo lỗi tại dòng
Mã:
If Rng.Offset(-1) = "" Then
Em thử lại vài lần, mỗi lần chạy ok thì khi tắt ẽxcel mở lại thì bị lỗi trên.
Mong chỉ giúp.
Có thể Rng là ô B1, khi đó Rng.Offset(-1) là một ô không có thực nên phát sinh lỗi.
Đó chỉ là phán đoán vậy, còn nguyên nhân chính xác ra sao thì phải xem dữ liệu thực tế của bạn ra sao đã rồi mới kết luận được.
 
Upvote 0

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

Back
Top Bottom