Hỏi về cách truy xuất dữ liệu từ CSDL (1 người xem)

Liên hệ QC

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

sondaubac

Thành viên hoạt động
Tham gia
14/10/08
Bài viết
168
Được thích
30
Mình có một bảng Cơ Sở Dữ Liệu gồm 2 sheet CSDL tên
1/ Sheet thứ nhất (CSDL tenCV) : chứa CSDL dựa vào mã hiệu có chứa tên công việc, đơn vị tính
2/ Sheet thứ hai (CSDL DM): Chứa CSDL cụ thể là định mức của từng công việc
3/ Sheet thứ ba (TDVT) : Chứa tên của các loại vật tư và đơn vị tính của nó

Nhờ mọi người viết dùm mình 1 CODE hoặc FUNCTION để xuất dữ liệu sang sheet xuatDL (đã update lại file theo ngày)
 

File đính kèm

Lần chỉnh sửa cuối:
Mình có một bảng Cơ Sở Dữ Liệu gồm 2 sheet CSDL tên
1/ Sheet thứ nhất (CSDL tenCV) : chứa CSDL dựa vào mã hiệu có chứa tên công việc, đơn vị tính
2/ Sheet thứ hai (CSDL DM): Chứa CSDL cụ thể là định mức của từng công việc

Nhờ mọi người viết dùm mình 1 CODE hoặc FUNCTION để xuất dữ liệu sang sheet xuatDL
Trong File đính kèm của anh đâu có sheet xuatDL đâu
Mà em tìm thấy bài 4 của Topic này đáp ứng được yêu cầu của anh đó :p
 
Lần chỉnh sửa cuối:
Mình có một bảng Cơ Sở Dữ Liệu gồm 2 sheet CSDL tên
1/ Sheet thứ nhất (CSDL tenCV) : chứa CSDL dựa vào mã hiệu có chứa tên công việc, đơn vị tính
2/ Sheet thứ hai (CSDL DM): Chứa CSDL cụ thể là định mức của từng công việc

Nhờ mọi người viết dùm mình 1 CODE hoặc FUNCTION để xuất dữ liệu sang sheet xuatDL
Bạn muốn hỏi thật hay đùa, File bạn có 5 sheet mà chẳng có tên sheet nào là xuatDL.
 
Lần chỉnh sửa cuối:
Xin lỗi các bạn, mình đã update file lại rồi đó.

Trong File đính kèm của anh đâu có sheet xuatDL đâu
Mà em tìm thấy bài 4 của Topic này đáp ứng được yêu cầu của anh đó :p

Bài 4 của Topic này chưa làm được như nguyện vọng của mình. Rất mong các bạn giúp đỡ
 
Hãy ngưng ngay chuyện đùa dai đi bạn!

File bạn đã Update có quái gì là dữ liệu đâu chứ!

Trong trang tính bạn cần hiện số liệu báo cáo thì iêu cầu là:
Phần này dựa vào mã hiệu và tra cứu trong sheet CSDL DM
và sắp xếp vào các vùng cụ thể: VẬT LIỆU, NHÂN CÔNG, MÁY

Nhưng trong các trang tính chả có mống nào thuộc về vật liệu, nhân công hay ca máy cả thì làm sao?

Vĩnh biệt!
 
Mình có một bảng Cơ Sở Dữ Liệu gồm 2 sheet CSDL tên
1/ Sheet thứ nhất (CSDL tenCV) : chứa CSDL dựa vào mã hiệu có chứa tên công việc, đơn vị tính
2/ Sheet thứ hai (CSDL DM): Chứa CSDL cụ thể là định mức của từng công việc

Nhờ mọi người viết dùm mình 1 CODE hoặc FUNCTION để xuất dữ liệu sang sheet xuatDL
Chẳng hiểu muốn làm cái gì? Xem File có 3 kiểu dùng (ở 3 sheet cuối).

Góp ý:
Tại sheet PTVT không nên gán hàm ở Cel F65536, Excel sẽ hiểu sử dụng 65536 dòng (làm tăng dung lượng File vô ích), tôi đã xử lý còn 62KB.
 

File đính kèm

Lần chỉnh sửa cuối:
Hãy ngưng ngay chuyện đùa dai đi bạn!

File bạn đã Update có quái gì là dữ liệu đâu chứ!

Trong trang tính bạn cần hiện số liệu báo cáo thì iêu cầu là:


Nhưng trong các trang tính chả có mống nào thuộc về vật liệu, nhân công hay ca máy cả thì làm sao?

Vĩnh biệt!
Nó đây, bởi vì mình không hiện tên của các loại vật liệu theo mã mà thôi. Còn nếu mà sử dụng pivot table thì nói làm gì nữa... Cái mình cần là căn cứ vào cơ sở dữ liệu mà mình sẽ lập thì có xuất ra dữ liệu như sheet xuatDL mà mình mong muốn có được không?
 

File đính kèm

Lần chỉnh sửa cuối:
Chẳng hiểu muốn làm cái gì? Xem File có 3 kiểu dùng (ở 3 sheet cuối).

Góp ý:
Tại sheet PTVT không nên gán hàm ở Cel F65536, Excel sẽ hiểu sử dụng 65536 dòng (làm tăng dung lượng File vô ích), tôi đã xử lý còn 62KB.
Cảm ơn bạn, tuy nhiên chưa đúng như mong muốn của mình..... Ý của mình ở đây là:
Mình có Cơ Sở Dữ Liệu gồm 2 sheet
1/ Sheet thứ nhất (CSDL tenCV) : chỉ dùng để tra cứu tên công việc
2/ Sheet thứ hai (CSDL DM): dùng để tra cứu định mức cho từng công việc
Cái mà mình mong muốn là làm cách nào sử dụng VBA để xuất được dữ liệu đó ra mà các dữ liệu đó nằm trong từng mục cụ thể (Gần giống như Pivot table )
 
Cảm ơn bạn, tuy nhiên chưa đúng như mong muốn của mình..... Ý của mình ở đây là:
Mình có Cơ Sở Dữ Liệu gồm 2 sheet
1/ Sheet thứ nhất (CSDL tenCV) : chỉ dùng để tra cứu tên công việc
2/ Sheet thứ hai (CSDL DM): dùng để tra cứu định mức cho từng công việc
Cái mà mình mong muốn là làm cách nào sử dụng VBA để xuất được dữ liệu đó ra mà các dữ liệu đó nằm trong từng mục cụ thể (Gần giống như Pivot table )
Em mới tìm được cái này Anh xem có được không
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Dulieu, Ketqua, I As Long, K As Long, Ivl As Long, Inc As Long, Imay As Long
    Dim VL As String, Nc As String, May As String, LaMa As Long
    Dim Ma As String, Mahieu As String
VL = "V" & ChrW$(7853) & "t li" & ChrW$(7879) & "u"
Nc = "Nh" & ChrW$(226) & "n c" & ChrW$(244) & "ng"
May = "M" & ChrW$(225) & "y"
On Error Resume Next
If Not Intersect(Target, [B7:B10000]) Is Nothing Then
    If Target.Count = 1 Then
        Mahieu = Sheets("XuatDL").Range("B" & Target.Row)
        With Sheets("CSDL DM")
            Dulieu = .Range("B8", .Range("B65535").End(3)).Resize(, 7)
        End With
        ReDim Ketqua(1 To UBound(Dulieu), 1 To 7)
        For I = 1 To UBound(Dulieu)
            Ma = Dulieu(I, 1)
            If Ma = Mahieu Then
                K = K + 1
                If K = 1 Then
                    Ketqua(K, 2) = "=VLOOKUP(RC[-2],'CSDL tenCV'!R6C2:R1800C4,2,0)"
                    Ketqua(K, 3) = "=VLOOKUP(RC[-3],'CSDL tenCV'!R6C2:R1800C4,3,0)"
                End If
                If K > 1 Then
                    If Dulieu(I, 5) = VL Then
                        Ivl = Ivl + 1
                        If Ivl = 1 Then
                            LaMa = LaMa + 1
                            Ketqua(K, 2) = ChrW(LaMa + 96) & "). " & VL
                            K = K + 1
                        End If
                        Ketqua(K, 1) = Dulieu(I, 2): Ketqua(K, 2) = Dulieu(I, 3):  Ketqua(K, 5) = Dulieu(I, 4)
                    End If
                    If Dulieu(I, 5) = Nc Then
                        Inc = Inc + 1
                        If Inc = 1 Then
                            LaMa = LaMa + 1
                            Ketqua(K, 2) = ChrW(LaMa + 96) & "). " & Nc
                            K = K + 1
                        End If
                        Ketqua(K, 1) = Dulieu(I, 2):  Ketqua(K, 2) = Dulieu(I, 3): Ketqua(K, 5) = Dulieu(I, 4)
                    End If
                    If Dulieu(I, 5) = May Then
                        Imay = Imay + 1
                        If Imay = 1 Then
                            LaMa = LaMa + 1
                            Ketqua(K, 2) = ChrW(LaMa + 96) & "). " & May
                            K = K + 1
                        End If
                        Ketqua(K, 1) = Dulieu(I, 2): Ketqua(K, 2) = Dulieu(I, 3): Ketqua(K, 5) = Dulieu(I, 4)
                    End If
                End If
            End If
        Next I
        If K Then
            Target.Offset(, 1).Resize(K, 5) = Ketqua
            Range("A" & Target.Row & ":G" & Target.Row).Resize(K).Borders.LineStyle = 1
            Range("A" & Target.Row & ":G" & Target.Row).Resize(K).Borders(xlInsideHorizontal).Weight = xlHairline
        Else
            MsgBox "Khong tim thay"
        End If
    End If
End If
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Ôi cảm ơn bạn, đúng là cái mà mình đang cần tìm. Từ giờ mình có thể căn cứ vào CODE này và tự làm 1 phần mềm dự toán đơn giản để sử dụng cho riêng mình. Mình sẽ up lên diễn đàn cho các bạn dùng chung
 
Ôi cảm ơn bạn, đúng là cái mà mình đang cần tìm. Từ giờ mình có thể căn cứ vào CODE này và tự làm 1 phần mềm dự toán đơn giản để sử dụng cho riêng mình. Mình sẽ up lên diễn đàn cho các bạn dùng chung
Anh thay cái code cũ bằng cái này đi (Em thêm cái xóa dữ liệu cũ xong rồi điền dữ liệu mới phòng khi mình cập nhật lại mã hiệu)
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Dulieu, Ketqua, I As Long, K As Long, Ivl As Long, Inc As Long, Imay As Long
    Dim VL As String, Nc As String, May As String, LaMa As Long
    Dim Ma As String, Mahieu As String, Er As Long, dongcuoi As Long
VL = "V" & ChrW$(7853) & "t li" & ChrW$(7879) & "u"
Nc = "Nh" & ChrW$(226) & "n c" & ChrW$(244) & "ng"
May = "M" & ChrW$(225) & "y"
On Error Resume Next
If Not Intersect(Target, [B7:B10000]) Is Nothing Then
    If Target.Count = 1 Then
        Mahieu = Sheets("XuatDL").Range("B" & Target.Row)
        With Sheets("CSDL DM")
            Dulieu = .Range("B8", .Range("B65535").End(3)).Resize(, 7)
        End With
        ReDim Ketqua(1 To UBound(Dulieu), 1 To 7)
        For I = 1 To UBound(Dulieu)
            Ma = Dulieu(I, 1)
            If Ma = Mahieu Then
                K = K + 1
                If K = 1 Then
                    Ketqua(K, 2) = "=VLOOKUP(RC[-2],'CSDL tenCV'!R6C2:R1800C4,2,0)"
                    Ketqua(K, 3) = "=VLOOKUP(RC[-3],'CSDL tenCV'!R6C2:R1800C4,3,0)"
                End If
                If K > 1 Then
                    If Dulieu(I, 5) = VL Then
                        Ivl = Ivl + 1
                        If Ivl = 1 Then
                            LaMa = LaMa + 1
                            Ketqua(K, 2) = ChrW(LaMa + 96) & "). " & VL
                            K = K + 1
                        End If
                        Ketqua(K, 1) = Dulieu(I, 2): Ketqua(K, 2) = Dulieu(I, 3):  Ketqua(K, 5) = Dulieu(I, 4)
                    End If
                    If Dulieu(I, 5) = Nc Then
                        Inc = Inc + 1
                        If Inc = 1 Then
                            LaMa = LaMa + 1
                            Ketqua(K, 2) = ChrW(LaMa + 96) & "). " & Nc
                            K = K + 1
                        End If
                        Ketqua(K, 1) = Dulieu(I, 2):  Ketqua(K, 2) = Dulieu(I, 3): Ketqua(K, 5) = Dulieu(I, 4)
                    End If
                    If Dulieu(I, 5) = May Then
                        Imay = Imay + 1
                        If Imay = 1 Then
                            LaMa = LaMa + 1
                            Ketqua(K, 2) = ChrW(LaMa + 96) & "). " & May
                            K = K + 1
                        End If
                        Ketqua(K, 1) = Dulieu(I, 2): Ketqua(K, 2) = Dulieu(I, 3): Ketqua(K, 5) = Dulieu(I, 4)
                    End If
                End If
            End If
        Next I
        If K Then
            Er = Target.End(xlDown).Row: dongcuoi = Range("D" & Rows.Count).End(3).Row
            If Er < dongcuoi Then
                Range("A" & Target.Row + 1 & ":G" & Er - 1).Delete
                Range("A" & Target.Row + 1 & ":G" & Target.Row + 1).Resize(K - 1).EntireRow.Insert
            End If
            Target.Offset(, -1).ClearContents
            If Target.Row = 7 Then
                Target.Offset(, -1) = 1
            Else
                Target.Offset(, -1) = Application.Max(Range("A7:A" & Target.Row - 1)) + 1
            End If
            Target.Offset(, 1).Resize(K, 5) = Ketqua
            Range("A" & Target.Row & ":G" & Target.Row).Resize(K).Borders.LineStyle = 1
            Range("A" & Target.Row & ":G" & Target.Row).Resize(K).Borders(xlInsideHorizontal).Weight = xlHairline
        End If
    End If
End If
End Sub
 
Lần chỉnh sửa cuối:
Hay quá, cảm ơn bạn... Ước gì mình có thể hiểu được mấy cái CODE này :(
Bạn có thể giải thích cụ thể từng dòng được không? Hoặc là thuật toán của nó ấy. Mình cũng muốn tìm hiểu mà khó quá
" If Not Intersect(Target, [B7:B10000]) Is Nothing Then " Dòng này là sao vậy bạn?
...
Còn nữa, mình lập cơ sở dữ liệu còn thiếu 1 sheet nữa. (Vì vẫn chưa có đơn vị tính của từng loại vật tư) Đó là sheet Tiêu đề tên vật tư căn cứ theo mã hiệu vật tư để xác định tên vật tư và đơn vị tính
Mình sẽ sửa lại file Cơ Sở Dữ Liệu gồm 3 sheet
1/ Sheet thứ nhất: chứa CSDL dựa vào mã hiệu có chứa tên công việc, đơn vị tính
2/ Sheet thứ hai: Chứa CSDL cụ thể là định mức của từng công việc
3/ Sheet thứ ba (TDVT): Chứa tiêu đề tên vật tư, căn cứ vào mã hiệu của vật tư
3 sheet này sẽ là cơ sở dữ liệu để xuất dữ liệu sang sheet Phân tích vật tư. Mình sẽ làm lại file excel cơ sở dữ liệu nhé
 
Lần chỉnh sửa cuối:
Hay quá, cảm ơn bạn... Ước gì mình có thể hiểu được mấy cái CODE này :(
Bạn có thể giải thích cụ thể từng dòng được không? Hoặc là thuật toán của nó ấy. Mình cũng muốn tìm hiểu mà khó quá
" If Not Intersect(Target, [B7:B10000]) Is Nothing Then " Dòng này là sao vậy bạn?
...
Còn nữa, mình lập cơ sở dữ liệu còn thiếu 1 sheet nữa. (Vì vẫn chưa có đơn vị tính của từng loại vật tư) Đó là sheet Tiêu đề tên vật tư căn cứ theo mã hiệu vật tư để xác định tên vật tư và đơn vị tính
Mình sẽ sửa lại file Cơ Sở Dữ Liệu gồm 3 sheet
1/ Sheet thứ nhất (CSDL tenCV) : chứa CSDL dựa vào mã hiệu có chứa tên công việc, đơn vị tính
2/ Sheet thứ hai (CSDL DM): Chứa CSDL cụ thể là định mức của từng công việc
3/ Sheet thứ ba (TDVT): Chứa tiêu đề tên vật tư, căn cứ vào mã hiệu của vật tư
3 sheet này sẽ là cơ sở dữ liệu để xuất dữ liệu sang sheet Phân tích vật tư. Mình sẽ làm lại file excel cơ sở dữ liệu nhé
Em có biết đâu. Code đó làm em đi Copy về mà -\\/.
 
mình sửa lại dữ liệu rồi đó bạn. Bạn xem rồi sửa CODE dùm mình với. Hic
 

File đính kèm

Khối lượng thì lấy ở chỗ nào vào vậy Bác . Xong rồi nữa thì làm gì tiếp nữa đây :(
Mình chỉ cần xuất dữ liệu thôi, mình đã sửa lại là có 3 sheet làm cơ sở dữ liệu đó bạn.

Nếu không thì giúp mình hiểu CODE VBA để mình sửa CODE cũng được... Đọc vào tù mù quá :(

Giải thích dùm mình mấy câu này cũng được

1/ Gán các biến VL, NC, May này có phải là để tra cứu trước mỗi loại vật liệu, nhân công, máy hay không?
VL = "V" & ChrW$(7853) & "t li" & ChrW$(7879) & "u" < ----------- Vật Liệu
Nc = "Nh" & ChrW$(226) & "n c" & ChrW$(244) & "ng" < ----------- Nhân công
May = "M" & ChrW$(225) & "y" < ----------- Máy


2/ Câu lệnh này If Target.Count = 1 Then
có phải là Nếu số ô thay đổi bằng 1 thì .....

3/ Intersect nghĩa là giao cắt, Target nghĩa là ô bị thay đổi trong sự kiện worksheet_ change .
Như vậy với câu lệnh
If Not Intersect(Target, [B7:B10000]) Is Nothing Then
Có phải là :
nếu có sự thay đổi từ ô B7 đến ô B10000) thì làm ..... đúng không bạn? Nhờ bạn sửa dùm file này với
 

File đính kèm

Lần chỉnh sửa cuối:
Mọi người giúp mình với
 
Ôi cảm ơn bạn, đúng là cái mà mình đang cần tìm. Từ giờ mình có thể căn cứ vào CODE này và tự làm 1 phần mềm dự toán đơn giản để sử dụng cho riêng mình. Mình sẽ up lên diễn đàn cho các bạn dùng chung

mình sửa lại dữ liệu rồi đó bạn. Bạn xem rồi sửa CODE dùm mình với. Hic

Thế này là thế nào?
 
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Dulieu, Ketqua, I As Long, K As Long, Ivl As Long, Inc As Long, Imay As Long
    Dim VL As String, Nc As String, May As String, LaMa As Long
    Dim Ma As String, Mahieu As String
VL = "V" & ChrW$(7853) & "t li" & ChrW$(7879) & "u"
Nc = "Nh" & ChrW$(226) & "n c" & ChrW$(244) & "ng"
May = "M" & ChrW$(225) & "y"
On Error Resume Next
If Not Intersect(Target, [B7:B10000]) Is Nothing Then
    If Target.Count = 1 Then
        Mahieu = Sheets("XuatDL").Range("B" & Target.Row)
        With Sheets("CSDL DM")
            Dulieu = .Range("B5", .Range("B65535").End(3)).Resize(, 6)                  ' Chon vung DL dinh muc tu o B5 den G...
        End With
        ReDim Ketqua(1 To UBound(Dulieu), 1 To 6)       ' Mang KETQUA co so dong cua DULIEU va So COT = 6
        
        For I = 1 To UBound(Dulieu)
        
            Ma = Dulieu(I, 1)           ' Ma = Ma hieu cong viec o cot 1 cua Mang DuLieu
            
            If Ma = Mahieu Then
            
                K = K + 1               ' Mac dinh ban dau K = 0 + 1 = 1
                                        ' Bien K la bien chay trong mang KET QUA
                
                
                If K = 1 Then           ' Neu K = 1 thi Chay dong dau tien, tim ten CV, DVT, KL = 1
                
                    Ketqua(K, 2) = "=VLOOKUP(RC[-2],'CSDL tenCV'!R5C2:R1800C4,2,0)"     ' Tim ten CV trong CSDL tenCV
                    Ketqua(K, 3) = "=VLOOKUP(RC[-3],'CSDL tenCV'!R5C2:R1800C4,3,0)"     ' Tim DVT cua cong viec trong CSDL tenCV
                    Ketqua(K, 4) = 1                                                    ' Gan Khoi luong = 1

                ElseIf K > 1 Then       ' Neu K > 1 thi gan gia tri cho mang KET QUA tu mang Du Lieu
                    'I = I - 1           ' Phai giam bien chay I xuong 1 don vi vi thieu 1 dong
                    If Dulieu(I, 4) = VL Then                                        ' Neu cot so 4 cua sheet CSDL DM la VAT LIEU thi lam ....
                        Ivl = Ivl + 1
                        If Ivl = 1 Then
                            Ketqua(K, 2) = ChrW(97) & "). " & VL                        ' Danh chu a). Vat Lieu
                            K = K + 1
                        End If
                        Ketqua(K, 1) = Dulieu(I, 2): Ketqua(K, 2) = Dulieu(I, 5): Ketqua(K, 5) = Dulieu(I, 3)
                    End If
                    
                    If Dulieu(I, 4) = Nc Then
                        Inc = Inc + 1
                        If Inc = 1 Then
                            Ketqua(K, 2) = ChrW(98) & "). " & Nc                        ' Danh chu b). Nhan Cong
                            K = K + 1
                        End If
                        Ketqua(K, 1) = Dulieu(I, 2):  Ketqua(K, 2) = Dulieu(I, 5): Ketqua(K, 5) = Dulieu(I, 3)
                    End If
                    
                    If Dulieu(I, 4) = May Then
                        Imay = Imay + 1
                        If Imay = 1 Then
                            Ketqua(K, 2) = ChrW(99) & "). " & May                       ' Danh chu c). May
                            K = K + 1
                        End If
                        Ketqua(K, 1) = Dulieu(I, 2): Ketqua(K, 2) = Dulieu(I, 5): Ketqua(K, 5) = Dulieu(I, 3)
                    End If
                    'I = I + 1
                    
                End If      ' Ket thuc khi K = 1 hoac la K > 1
            End If          ' Ket thuc khi MA = MA HIEU
        Next I
        If K Then
            Target.Offset(, 1).Resize(K, 5) = Ketqua
            Range("A" & Target.Row & ":G" & Target.Row).Resize(K).Borders.LineStyle = 1
            Range("A" & Target.Row & ":G" & Target.Row).Resize(K).Borders(xlInsideHorizontal).Weight = xlHairline
        Else
            MsgBox "Khong tim thay"
        End If
    End If
End If
End Sub
Mình sửa lại file rồi, nhưng CODE bị vướng 1 chút vì truy xuất dữ liệu bị thiếu dòng dữ liệu đầu tiên
 

File đính kèm

Update File hoàn chỉnh, chưa căn chỉnh được tiêu đề hạng mục công việc và tiêu đề VẬT LIỆU , NHÂN CÔNG, MÁY THI CÔNG
 

File đính kèm

File đính kèm

Bạn xem bài này của mình thế nào với. Mình truy xuất dữ liệu được rồi, nhưng còn vướng mắc 1 số vấn đề:
1/ chưa đánh được số thứ tự ở sheet xuat DL
2/ Sheet KHỐI LƯỢNG mình muốn tạo Form để nhập dữ liệu gồm mã hiệu, tên công việc, Đơn vị tính. Mình đã tạo được form nhưng đến phần truy xuất dữ liệu thì CODE báo lỗi over flow
CODE trong Form của mình nè:
Mã:
Private Sub cmdNhapLieu_Click()
Dim ApMH As Range
Dim x As Integer

    Set ApMH = Sheet1.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)   ' Chon o bat dau dien du lieu
   
    For x = 0 To Me.LBox_DATAtenCV.ListCount - 1                    ' LBox_DATAtenCV la ten cua list box ma chung ta chon trong form
                                                                    ' Cho x chay tu dong so 0 den dong so cuoi cung cua ListBox -1 (tuc la cho i chay tu dong dau den dong cuoi List Box)
                                                                   
        If Me.LBox_DATAtenCV.Selected(x) Then                       ' Neu lua chon dong thu x+1 thi
       
            ApMH = Me.LBox_DATAtenCV.List(x)                        ' Gan ApMh la vung du lieu cua dong thu x+1
            ApMH.Offset(0, 0) = Me.LBox_DATAtenCV.List(x, 1)        ' Gan ApMh dong 1 cot 1 là vung du lieu LIST BOX dong x+1 cot 1
            ApMH.Offset(0, 1) = Me.LBox_DATAtenCV.List(x, 2)        ' Gan ApMh dong 1 cot 2 là vung du lieu LIST BOX dong x+1 cot 2
            ApMH.Offset(0, 2) = Me.LBox_DATAtenCV.List(x, 3)        ' Gan ApMh dong 1 cot 3 là vung du lieu LIST BOX dong x+1 cot 3

            Set ApMH = ApMH.Offset(1, 0)                            ' Cho ApMh di chuyen xuong 1 dong
        End If
    Next x
    For x = 0 To Me.LBox_DATAtenCV.ListCount - 1
        If Me.LBox_DATAtenCV.Selected(x) Then Me.LBox_DATAtenCV.Selected(x) = False
    Next x
    Unload formTraMH
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Em chưa biết cái này thầy ạ

Thời buổi công nghệ thay đổi hằng ngày. Nhu cầu truy vấn dữ liệu cũng tăng theo.
Khi thấy nhu cầu tăng trên khả năng cổ điển của Excel thì quý vị bù đắp bằng cách code VBA, hoặc dùng những công thức mảng hết sức phức tạp.
Thực ra, hầu hết những cái rắc rối này Microsoft đã có cải tiến qua các phiên bản mới. Phiên bản 2016 và trên nữa là 365 có những tiện nghi truy vấn và phân tích dữ liệu lớn, dữ liệu trên mạng, dư liệu các CSDL khác. Đó là PowerQuery và PowerPivot.
Nếu tôi là bạn thì tôi bớt chút thì giờ đùa với VBA, học cách sử dụng 2 cái trên có lợi cho khả năng Excel (*) hơn.

(*) Tôi cẩn thận dùng hoạt cảnh Excel để phan biệt rõ là theo quan điểm của tôi khả năng Excel khác với khả năng lập trình (VBA), hay khả năng tạo công thức phức tạp.
 
Thời buổi công nghệ thay đổi hằng ngày. Nhu cầu truy vấn dữ liệu cũng tăng theo.
Khi thấy nhu cầu tăng trên khả năng cổ điển của Excel thì quý vị bù đắp bằng cách code VBA, hoặc dùng những công thức mảng hết sức phức tạp.
Thực ra, hầu hết những cái rắc rối này Microsoft đã có cải tiến qua các phiên bản mới. Phiên bản 2016 và trên nữa là 365 có những tiện nghi truy vấn và phân tích dữ liệu lớn, dữ liệu trên mạng, dư liệu các CSDL khác. Đó là PowerQuery và PowerPivot.
Nếu tôi là bạn thì tôi bớt chút thì giờ đùa với VBA, học cách sử dụng 2 cái trên có lợi cho khả năng Excel (*) hơn.

(*) Tôi cẩn thận dùng hoạt cảnh Excel để phan biệt rõ là theo quan điểm của tôi khả năng Excel khác với khả năng lập trình (VBA), hay khả năng tạo công thức phức tạp.
Cám ơn Thầy đã chỉ bảo. Để em tìm tài liệu xem thử. Có gì mong Thầy giúp đỡ ạ ./
 
Hic không hiểu sao càng ngày bị cuồng VBA rồi, nghĩ mãi không ra hướng giải quyết, mà cứ mò vào diễn đàn đăng bài hỏi xong và được mọi người gợi ý lại mò ra cách làm mới lạ chứ.
Có cao thủ nào check dùm em xem có bị lỗi gì không với. Mình đã làm xong phần worksheet_change, và form nhập dữ liệu đầu vào.

Nhờ mọi người hướng dẫn dùm cách nào link tự động từng mã hiệu công việc ở cột B của sheet XuatDL từ sheet KHỐI LƯỢNG sang. Chứ không lẽ cứ ngồi nhập tay từng cái mã hiệu cho nó nhày ra dữ liệu thì thấy thủ công quá
 

File đính kèm

Hic không hiểu sao càng ngày bị cuồng VBA rồi, nghĩ mãi không ra hướng giải quyết, mà cứ mò vào diễn đàn đăng bài hỏi xong và được mọi người gợi ý lại mò ra cách làm mới lạ chứ.
Có cao thủ nào check dùm em xem có bị lỗi gì không với. Mình đã làm xong phần worksheet_change, và form nhập dữ liệu đầu vào.

Nhờ mọi người hướng dẫn dùm cách nào link tự động từng mã hiệu công việc ở cột B của sheet XuatDL từ sheet KHỐI LƯỢNG sang. Chứ không lẽ cứ ngồi nhập tay từng cái mã hiệu cho nó nhày ra dữ liệu thì thấy thủ công quá
Anh gì ấy ở Đắk Lắc ơi. Anh chỉ đọc Code thất hoàng mang. Chứ như bọn em nhìn vào CSDL của anh cứ thấy đổi như vậy thì người giúp thì có đau đầu không anh ?
 
Anh gì ấy ở Đắk Lắc ơi. Anh chỉ đọc Code thất hoàng mang. Chứ như bọn em nhìn vào CSDL của anh cứ thấy đổi như vậy thì người giúp thì có đau đầu không anh ?
Mình xin lỗi bạn nha, vì mình thấy sai sót nên chỉnh lại đó thôi.
Nhờ những góp ý của bạn mà mình đã làm được gần như toàn bộ cái mà mình mong muốn rồi.
Giúp mình vấn đề này với. Mình đã tạo được Form rồi nhưng mà không biết tạo Text Box tìm kiếm cho nhanh. Có cách nào giúp mình không? Hoặc là gợi mở cho 1 mình chỗ để nghiên cứu cũng được.
 

File đính kèm

Mình xin lỗi bạn nha, vì mình thấy sai sót nên chỉnh lại đó thôi.
Nhờ những góp ý của bạn mà mình đã làm được gần như toàn bộ cái mà mình mong muốn rồi.
Giúp mình vấn đề này với. Mình đã tạo được Form rồi nhưng mà không biết tạo Text Box tìm kiếm cho nhanh. Có cách nào giúp mình không? Hoặc là gợi mở cho 1 mình chỗ để nghiên cứu cũng được.
Ngày xưa em cũng tập làm file dự toán(Để nghiên cứu về VBA). Nhưng về sau thấy nản quá vì có nhiều vấn đề... Nếu anh muốn theo đuổi vấn đề này thì anh phải bố trí CSDL chuẩn rồi mới tiếp tục đươc.
 
Ngày xưa em cũng tập làm file dự toán(Để nghiên cứu về VBA). Nhưng về sau thấy nản quá vì có nhiều vấn đề... Nếu anh muốn theo đuổi vấn đề này thì anh phải bố trí CSDL chuẩn rồi mới tiếp tục đươc.
Mình đã viết được ok rồi bạn, cơ bản là giờ chạy ra số liệu vô tư rồi, còn thiếu cái tìm kiếm này và copy dữ liệu từ File Excel này sang Excel khác thôi. Mình sẽ gửi bạn xem thử sớm nhất có thể.
Bây giờ thì giúp mình chỗ này với?
Mã:
    Dim start_R As Long
    Dim lrDATA As Long

start_R = 7
lrDATA = Sheet5.Range("D" & Rows.Count).End(xlUp).Row '


Sheet5.Range("A" & start_R & ":E " & lrDATA).Select

Vậy mà sao VBA lại báo lỗi mới lạ chứ ? Nó báo lỗi này ""Method 'Range' of Object '_Worksheet' Failed"
Viết vầy thì chạy vô tư
Sheet5.Range("G" & 7 & ":G" & 79).Select
 
Mình đã viết được ok rồi bạn, cơ bản là giờ chạy ra số liệu vô tư rồi, còn thiếu cái tìm kiếm này và copy dữ liệu từ File Excel này sang Excel khác thôi. Mình sẽ gửi bạn xem thử sớm nhất có thể.
Bây giờ thì giúp mình chỗ này với?
Mã:
Sheet5.Range("A" & start_R & ":E " & lrDATA).Select

Vậy mà sao VBA lại báo lỗi mới lạ chứ ? Nó báo lỗi này ""Method 'Range' of Object '_Worksheet' Failed"
Viết vầy thì chạy vô tư
Sheet5.Range("G" & 7 & ":G" & 79).Select

Nhai vội quá nên bị hóc đấy thôi. Bi giờ thì khoan hãy làm cái phần đỏ đỏ trên.
Cái phần màu xanh đáng lẽ ngừoi viết code 1 tuần lễ là phải biết tự tìm ra. Bạn vẫn phải hỏi tức là quá trình học của bạn thiếu thốn nhiều.

Bỏ ra ít nhất 1 ngày tập cái kỹ thuật gọi là DEBUG.
Nếu chưa thành thạo kỹ thuật này thì bất cứ đoạn code nào cỡ 15-20 dòng là bạn lại phải đem lên đây hỏi.
 

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

Back
Top Bottom