{NHỜ GIÚP} Tạo giúp 1 marco để ghi dữ liệu. (1 người xem)

Liên hệ QC

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

trananhtommy

Thành viên hoạt động
Tham gia
11/12/06
Bài viết
111
Được thích
6
Chào các Bác trong diễn đàn.

Em đang làm hộ 1 file. Trong đó có phần cập nhật và lưu dữ liệu..

Vì việc cập nhật phát sinh theo ngày tháng nên 1 dòng dữ liệu phải ghi 2 lần.

Lần 1 ghi dữ liệu phát sinh
Lần 2 ghi dữ liệu hoàn thành nhưng phải hoàn thành đúng mã việc đã phát sinh. Làm thông thường thì mình dùng Ctrl+F gõ ô cần tìm và điền dữ liệu là được. Nhưng E muốn nó chạy bằng marco cho thuận tiện người sử dụng mà loay hoay chưa biết làm thế nào.

E gửi file ví dụ lên. Rất mong các Bác trợ giúp thêm cho E

E cảm ơn rất nhiều.!@
 

File đính kèm

Bạn fải chuột vô thanh trang tính có tên là 'CapNhat' & chép toàn bộ nội dung sự kiện này vô CS VBE:
Mã:
Option Explicit
[B]Private Sub Worksheet_Change(ByVal Target As Range)
[/B] Dim Sh As Worksheet, Rng As Range, sRng As Range
 If Not Intersect(Target, [C9]) Is Nothing Then
    Set Sh = ThisWorkbook.Worksheets("DuLieu")
    Set Rng = Sh.Range(Sh.[A5], Sh.[A5].End(xlDown))
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
        MsgBox "Khong có Ma Này.", , "Ban Xem Lai"
    Else
        sRng.Offset(, 3).Value = Target.Offset(1).Value
    End If
    Randomize
    Target.Offset(1).Interior.ColorIndex = 34 + 9 * Rnd() \ 1
 End If
[B]End Sub[/B]

Qui trình thực hiện ta đổi lại thứ tự: Nhập ngày hoàn thành ở [C10] trước; sau đó chọn mã công việc
Chuyện còn lại là macro nó làm cho bạn

Chúc thành công.
 
Upvote 0
Có cách thể đơn giản được hơn không Bác? Vì E muốn chọn mã công việc trước (sau khi chọn xong nó sẽ liệt kê các dữ liệu đã ghi trong "Dulieu" để người nhập biết là đã chọn mã đúng - cái này có thể sử dụng VLOOKUP vì mã không trùng nhau. Sau đó mới nhập ngày hoàn thành và cuối cùng nhấn ghi (như marco ghi ở trên E đã tạo ấy)..

Cái E muốn là marcro TÌM ĐÚNG Ô PHÙ HỢP VỚI MÃ để điền thêm thông số thôi ạ. Bác viết đơn giản chút để E fix vào file của E được không?

Nhờ bác sửa lại chút chút với..
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử đối chiếu nội dung macro trên với macro của nút lệnh "GHI" sau đây

Mã:
Option Explicit
[B]Sub gpeGhi()
[/B]Dim Sh As Worksheet, Rng As Range, sRng As Range
  
 Set Sh = ThisWorkbook.Worksheets("DuLieu")
 Set Rng = Sh.Range(Sh.[A5], Sh.[A5].End(xlDown))
 Set sRng = Rng.Find([C9].Value, , xlFormulas, xlWhole)
 If sRng Is Nothing Then
    MsgBox "Ma Này Khong Có.", , "Ban Nen Xem Lai"
 Else
    sRng.Offset(, 3).Value = [C10].Value
    Randomize
    [C10].Interior.ColorIndex = 34 + 9 * Rnd() \ 1
 End If
[B]End Sub
[/B]
 
Upvote 0
Mã:
Option Explicit
[B]Sub gpeGhi()
[/B]Dim Sh As Worksheet, Rng As Range, sRng As Range
  
 Set Sh = ThisWorkbook.Worksheets("DuLieu")
 Set Rng = Sh.Range(Sh.[A5], Sh.[A5].End(xlDown))
 Set sRng = Rng.Find([C9].Value, , xlFormulas, xlWhole)
 If sRng Is Nothing Then
    MsgBox "Ma Này Khong Có.", , "Ban Nen Xem Lai"
 Else
    sRng.Offset(, 3).Value = [C10].Value
    Randomize
    [C10].Interior.ColorIndex = 34 + 9 * Rnd() \ 1
 End If
[B]End Sub
[/B]

Tuyệt quá Bác ạ, nhưng đưa vào file của E lại báo lỗi. Nhờ Bác thêm chút xíu fix nốt hộ E cái là quá OK.
 
Lần chỉnh sửa cuối:
Upvote 0
F ải sửa thành vầy:

Mã:
Option Explicit
[B]Sub gpeGhi()[/B]
 Dim Sh As Worksheet, Rng As Range, sRng As Range
  
 Set Sh = ThisWorkbook.Worksheets("DuLieu")
 Set Rng = Sh.Range(Sh.[A3], Sh.[A63210].End(xlUp)) '*'
 Set sRng = Rng.Find([C16].Value, , xlFormulas, xlWhole)
 If sRng Is Nothing Then
    MsgBox "Ma Này Khong Có.", , "Ban Nen Xem Lai"
 Else
    sRng.Offset(, 6).Value = [C20].Value
    sRng.Offset(, 7).Value = [C21].Value
  Randomize
    [C15].Interior.ColorIndex = 34 + 9 * Rnd() \ 1  '*'
 End If
[B]End Sub[/B]
 
Upvote 0

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

Back
Top Bottom