Gán macro vào sự kiện Combo Box Change (1 người xem)

Liên hệ QC

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

khunglongcodon

Thành viên thường trực
Tham gia
24/11/06
Bài viết
222
Được thích
100
Nghề nghiệp
Kế toán
Em làm một Combo Box hiển thị vùng dữ liệu gồm 3 cột từ một tên khối có sẵn. Sau đó em ghi macro trích lọc rồi copy đoạn mã đó vào sự kiện Combo Box change. Nhưng nó bị dính cái lỗi là khi em thay đổi bên vùng dữ liệu là combo box tự chạy theo. Không biết các anh chị nào giúp em khắc phục không.
 

File đính kèm

Nếu em sử dụng 1 file khác để lưu những nội dung cần chọn như trong sheet1 ví dụ là file dữ liệu thì trong userform trong file CallMac em phải khai báo nó thế nào? Private sub userform_initalize()........end sub

Nếu phải viết code theo kiểu này thì dân gian gọi là "mua trâu vẽ bóng" đấy. Sao không up hết những file cần thiết lên, nếu dữ liệu mật không thể tiết lộ thì gán dữ liệu tương đương là được rồi. Còn nếu bạn muốn tự nghiên cứu Userform thì bạn xem file này rồi nghiên cứu từ từ
 

File đính kèm

Upvote 0
Nếu em sử dụng 1 file khác để lưu những nội dung cần chọn như trong sheet1 ví dụ là file dữ liệu thì trong userform trong file CallMac em phải khai báo nó thế nào? Private sub userform_initalize()........end sub
Bạn dùng ADO để kết nối với CSDL, ví dụ CSDL của bạn có tên là Data.xls, file csdl này nằm chung với folder của file chạy.
Bạn kết nối với CSDL bằng code sau:

Mã:
Public cnn As New ADODB.Connection
Sub Moketnoi()
  With cnn
    .ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & _
                        ThisWorkbook.Path & "\Data.xls; " & _
                        "Extended Properties=Excel 8.0;"
    .CursorLocation = adUseClient
    .Open
  End With
    
End Sub

Lấy dữ liệu duy nhất trong sheet1 của file data.xls rồi đưa vào combobox:

Mã:
Private Sub UserForm_Initialize()
Dim arrValue As Variant
Dim lsSQL As String: Dim rst As New ADODB.Recordset
If cnn.State = 1 Then cnn.Close
    Moketnoi
    lsSQL = "select distinct [MaCongViec], [NoiDung] from [Sheet1$]"
       rst.Open lsSQL, cnn, adOpenStatic, adLockReadOnly
       arrValue = rst.GetRows()
        With ComboBox1
            .Clear
            .List = arrValue
            .List = Application.Transpose(arrValue)
        End With
 rst.Close
 Set rst = Nothing
 cnn.Close
 Set cnn = Nothing
     
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom