Cần giúp về ComboBox và TextBox

  • Thread starter Thread starter 148btx
  • Ngày gửi Ngày gửi
Liên hệ QC

148btx

Thành viên mới
Tham gia
14/10/06
Bài viết
40
Được thích
103
Nghề nghiệp
Thiết kế điện
Tôi có cái File này tải từ diễn đàn www.giaiphapexcel.com
Nó rất hữu ích với tôi trong việc lập chương trình tính toán ở công ty nhưng chưa biết nhập dữ liệu tương ứng từ ComboBox vào TextBox. (mỗi quận huyện đều có con số của mình từ cột C và cần nhập TextBox)
Xin các bạn chỉ giùm, rất cảm ơn
 
Lần chỉnh sửa cuối:
Bạn xoá cái đoạn if ví dụ cua bạn đi rồi thêm 1 sub sau:

Mã:
Private Sub Huyen_Change()
  TextBox1 = Application.WorksheetFunction.VLookup(Huyen, Sheet3.[b2:c1000], 2, 0)
End Sub
 
Upvote 0
Bạn xoá cái đoạn if ví dụ cua bạn đi rồi thêm 1 sub sau:

Mã:
Private Sub Huyen_Change()
  TextBox1 = Application.WorksheetFunction.VLookup(Huyen, Sheet3.[b2:c1000], 2, 0)
End Sub
Code này không được đâu anh à! Vì tên huyện của tỉnh này có khả năng trùng với tên huyện của tỉnh khác (sơ sơ cũng có đến 9 tỉnh có huyện mang tên Châu Thành rồi)
Theo em code thế này ổn hơn:
PHP:
Private Sub Huyen_Change()
  TextBox1 = WorksheetFunction.VLookup(Huyen, Range(Huyen.RowSource).Resize(, 2), 2, 0)
End Sub
 
Upvote 0
Ồ, mình không tính đến trùng tên huyện.
Sửa lai chút đảm bảo 100% chính xác nếu lọc huyện chính xác (Mình đưa luôn số của huyên vào combo, chọn huyện cũng là chọn số luôn)

Mã:
Private Sub Tinh_Change()
  Dim CountItem As Long, RngAdd As String
  Huyen.RowSource = ""
  With Range(Sheet3.[A2], Sheet3.[A65536].End(xlUp))
    CountItem = WorksheetFunction.CountIf(.Cells, Tinh)
    If CountItem Then
            RngAdd = "'" & .Parent.Name & "'!" & _
      .Offset(WorksheetFunction.Match(Tinh, .Cells, 0) - 1, 1).Resize(CountItem, [SIZE=4][B][COLOR=Red]2[/COLOR][/B][/SIZE]).Address

      Huyen.RowSource = RngAdd
    End If
  End With

End Sub
Private Sub Huyen_Change()
  [B][COLOR=Red]TextBox1 = Huyen.Column(1)[/COLOR][/B]
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Vấn đề trùng tên huyện của các tỉnh giải quyết cũng dễ thôi. Bản thân trong code có 1 biến RngAdd là RowSource của Combo Huyen, thì dò tìm ngay trong Range có địa chỉ là biến đó, resize(,2).
Chỉ cần khai báo biến public thôi.
 
Upvote 0
Mình đang làm một fỉle quản lý cửa hàng, trong sheet sản phẩm mình có 2 cột: "Nhóm" và "Mã SP"
Nhóm thì có: Áo, Quần, Váy v.v...
Mã SP tương ứng: Áo bắt đầu là A, Quần bắt đầu là Q ví dụ A08007, Q08004
Khi mình nhập liệu, mình để hai combo box là "Nhóm" và "Mã SP". Mình đang muốn khi chọn Nhóm (Ví dụ: Áo) thì nó sẽ chỉ hiện ra các mã bắt đầu bằng A thôi.
Có thể gợi ý cho mình hàm đó được không. Mình mới học VBA, vào reference đọc chưa hiểu hết.
Cảm ơn trước.
 
Upvote 0
Thì dạng file của topic này là như vậy đấy thôi, bạn thay tỉnh là nhóm hàng, còn mặt hàng là huyện là OK rồi.
 
Upvote 0
Mình lấy file topic này về rồi. Nhưng mình chưa hiểu lắm đoạn code sau:
Mã:
With Range(Sheet3.[A2], Sheet3.[A65536].End(xlUp))
    CountItem = WorksheetFunction.CountIf(.Cells, Tinh)
    If CountItem Then
      RngAdd = "'" & .Parent.Name & "'!" & .Offset(WorksheetFunction.Match(Tinh, .Cells, 0) - 1, 1).Resize(CountItem).Address
      Huyen.RowSource = RngAdd
    End If
  End With

Chỗ hàm Match(Tinh, .Cells, 0) thì cái .Cells nghĩa là cả worksheet luôn à? còn - 1 nghĩa là gì, bạn có thể giải thích cho mình được không.

P.S: mặt hàng của mình là dynamic range, không biết có gì khác với trong file này không?
 
Upvote 0
Mình lấy file topic này về rồi. Nhưng mình chưa hiểu lắm đoạn code sau:
Mã:
With Range(Sheet3.[A2], Sheet3.[A65536].End(xlUp))
    CountItem = WorksheetFunction.CountIf(.Cells, Tinh)
    If CountItem Then
      RngAdd = "'" & .Parent.Name & "'!" & .Offset(WorksheetFunction.Match(Tinh, .Cells, 0) - 1, 1).Resize(CountItem).Address
      Huyen.RowSource = RngAdd
    End If
  End With
Chỗ hàm Match(Tinh, .Cells, 0) thì cái .Cells nghĩa là cả worksheet luôn à? còn - 1 nghĩa là gì, bạn có thể giải thích cho mình được không.

P.S: mặt hàng của mình là dynamic range, không biết có gì khác với trong file này không?
.Cells là đang nói về cái With nằm ở trên, tức Range(Sheet3.[A2], Sheet3.[A65536].End(xlUp))
Còn vụ -1 ấy à? Không trừ 1 thì nó sẽ... thừa... chỉ là công thức thường gán vào, bạn thí nghiệm cũng biết mà
Vấn đề áp dụng trên file của bạn thế nào có lẽ phải thấy file mới biết ---> Bạn đưa file lên đi
 
Upvote 0
Xin hỏi thêm về ComboBox

Xin hỏi thêm: Trong VBA tôi có 1 cái UserForm và trong đó có nhiều ComboBox và muốn mỗi ComboBox lại được lấy dữ liệu từ nhiều Range khác nhau. Nhưng tôi làm cho 1 cái ComboBox thì hoạt động tốt, tại sao khi làm nhiều cái thì chưa được:

Sub UserForm1_Click()
' List1 là lấy dữ liệu từ cột A2 đến cột A10, List2 lấy dữ liệu từ cột D3 đến D8, List3 lấy dữ liệu từ cột C9 đến C20 chẳng hạn
Sheet1.ComboBox1.RowSource = "List1"
Sheet1.ComboBox2.RowSource = "List2"
Sheet1.ComboBox3.RowSource = "List3"
UserForm1.Show
End Sub
 
Upvote 0
Sẳn giúp em cái này với em muốn làm 2 combobox 1 cái để "loại" 1 cái hiển thị "số thứ tự" giống như bài bán sản phẩm của bạn haimuoingan thanks .Có gởi file đính kèm các bạn xem giúp
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Xin hỏi thêm: Trong VBA tôi có 1 cái UserForm và trong đó có nhiều ComboBox và muốn mỗi ComboBox lại được lấy dữ liệu từ nhiều Range khác nhau. Nhưng tôi làm cho 1 cái ComboBox thì hoạt động tốt, tại sao khi làm nhiều cái thì chưa được:

Sub UserForm1_Click()
' List1 là lấy dữ liệu từ cột A2 đến cột A10, List2 lấy dữ liệu từ cột D3 đến D8, List3 lấy dữ liệu từ cột C9 đến C20 chẳng hạn
Sheet1.ComboBox1.RowSource = "List1"
Sheet1.ComboBox2.RowSource = "List2"
Sheet1.ComboBox3.RowSource = "List3"
UserForm1.Show
End Sub
Lý nào UserForm1.Show lại nằm trong sự kiện UserForm1_Click nhỉ? ---> Giống như con có trước cha! Hic...
 
Upvote 0
Cám ơn các bạn, để mình viết và nghiên cứu thử. Chúc các bạn vui vẽ.

Mình đã dựa vào bài của sealand đã làm được rùi thanks các bạn.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Cho Mình hỏi cách bạn làm thì hay đó nhưng khi thêm huyện vào dòng khác nhưng cùng tỉnh thì nó không gom nhóm lại với nhau giúp mình với.
 
Upvote 0
Web KT

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

Back
Top Bottom