• Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
Chủ Nhật, Tháng Ba 26, 2023
  • Login
No Result
View All Result
NEWSLETTER
Học gia sư kế toán
  • Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
  • Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
No Result
View All Result
Học Gia sư Kế toán
No Result
View All Result

Hướng dẫn cách viết code sửa dữ liệu trong bảng tính Excel bằng VBA

by My Lê
21/02/2023
in VBA
0
Hướng dẫn cách viết code sửa dữ liệu trong bảng tính Excel bằng VBA

Originally posted on 12/02/2022 @ 21:39

Hướng dẫn cách viết code sửa dữ liệu trong bảng tính Excel bằng VBA

  • Chuyên mục:
  • VBA

Khi ứng dụng VBA trong Excel, chúng ta có thể nhập dữ liệu trên 1 Sheet rồi lưu sang Sheet khác. Đã có rất nhiều bài viết trên Blog.hocgiasuketoan.com hướng dẫn bạn cách làm này. Nhưng làm thế nào để chúng ta có thể “nhặt” dữ liệu ra để sửa, sau khi sửa xong sẽ lưu lại đúng vị trí của dòng dữ liệu đó trong bảng tính? Trong bài viết này các bạn sẽ được tìm hiểu chi tiết cách làm.

Quy trình sửa dữ liệu trong lập trình VBA

Sửa dữ liệu thông thường, chúng ta chỉ việc vào trong bảng tính và sửa trực tiếp. Nhưng việc đó có một số hạn chế:

  • Bạn không ghi nhận lại được thời điểm bạn sửa dữ liệu. Việc này dẫn tới bạn không biết việc sửa đó ảnh hưởng thế nào, từ khi nào tới các dữ liệu khác có liên quan (ví dụ như báo cáo từ dữ liệu đó sẽ có kết quả khác)
  • Trong trường hợp bảng tính được khóa (Protect Sheet) thì không sửa trực tiếp được.
  • Với bảng tính lớn, nhiều dữ liệu, việc sửa trực tiếp trong bảng đó sẽ dễ nhầm lẫn, sai vị trí.

Do đó chúng ta có thể sử dụng quy trình sửa dữ liệu trong lập trình VBA để khắc phục các hạn chế đó. Cụ thể:

  • Chọn dòng dữ liệu cần sửa
  • Đưa dữ liệu từ dòng đó sang 1 Form riêng để sửa (có thể là form trên Sheet hoặc UserForm trong VBA)
  • Sửa nội dung trong Form
  • Lưu lại nội dung từ Form vào đúng dòng dữ liệu đã chọn để sửa trong bảng dữ liệu

Cách viết code lấy dữ liệu cần sửa trong bảng tính Excel bằng VBA

Bước 1: Xây dựng cấu trúc bảng dữ liệu và Form sửa dữ liệu

Ví dụ chúng ta có bảng tính như sau:

bang du lieu edit data

Trong hình trên, chúng ta thấy có 2 phần:


VBA101 92019 nho
  • Bảng dữ liệu nhân sự: là nơi chứa các thông tin về nhân viên trong công ty
  • Bảng Sửa thông tin nhân sự (Form Sửa thông tin): Là nơi mà chúng ta sẽ trích lọc thông tin của nhân viên cần sửa

Kèm với đó là 3 nút lệnh (Sử dụng chức năng Insert > Shape để tạo ra các nút lệnh này)

  • Mũi tên từ trái sang phải: Đại diện cho lệnh Lấy dữ liệu để sửa. Khi bấm (click) vào mũi tên đó sẽ thực thi câu lệnh lấy dòng dữ liệu cần sửa tại bảng Dữ liệu nhân sự vào Form Sửa thông tin.
  • Dấu X: Đại diện cho lệnh xóa nội dung bên trong Form Sửa thông tin
  • Mũi tên từ phải sang trái: Đại diện cho lệnh Lưu dữ liệu sau khi sửa. Khi bấm vào mũi tên này sẽ thực thi lệnh lưu nội dung từ Form sửa thông tin vào đúng vị trí dòng dữ liệu đã lấy ra để sửa.

Lưu ý: Form sửa dữ liệu bạn có thể đặt tại Sheet khác hoặc sử dụng UserForm. Trong ví dụ này làm chung trong 1 Sheet để dễ theo dõi.

Bước 2: Viết code lấy dữ liệu vào Form sửa thông tin

Gồm các lệnh:

  1. Xác định vị trí dòng chứa thông tin cần sửa
  2. Lấy nội dung tương ứng theo từng cột tại dòng chứa thông tin cần sửa vào Form

1. Khi bấm chuột chọn vào dòng cần sửa, chúng ta có câu lệnh xác định số dòng theo ô được chọn là:

ActiveCell.Row

Gán 1 biến đại diện cho giá trị này là DongSua, ta có:

Sub LayDuLieu()

‘1. Lệnh gán biến xác định dòng cần sửa

Dim DongSua As Long
DongSua = ActiveCell.Row

‘2. Lệnh lấy dữ liệu theo dòng cần sửa

End Sub

2. Lệnh lấy dữ liệu theo dòng cần sửa gồm:

  • Số dòng cần sửa được gán vào ô J2
  • Mã nhân viên cần sửa gán vào ô H5
  • Tên nhân viên cần sửa gán vào ô J5
  • Ngày sinh của nhân viên cần sửa gán vào ô H8
  • Bộ phận của nhân viên cần sửa gán vào ô J8
  • Ngày vào làm của nhân viên cần sửa gán vào ô L8

Tất cả các nội dung trên đều được thực thi trong Sheet1 (là Sheet chứa bảng dữ liệu và Form sửa) nên có thể viết như sau:

Sub LayDuLieu()

‘1. Lệnh gán biến xác định dòng cần sửa

Dim DongSua As Long
DongSua = ActiveCell.Row

‘2. Lệnh lấy dữ liệu theo dòng cần sửa

With Sheet1
.Range(“J2”).Value = DongSua
.Range(“H5”).Value = .Range(“A” & DongSua).Value
.Range(“J5”).Value = .Range(“B” & DongSua).Value
.Range(“H8”).Value = .Range(“C” & DongSua).Value
.Range(“J8”).Value = .Range(“D” & DongSua).Value
.Range(“L8”).Value = .Range(“E” & DongSua).Value
End With

End Sub

Bây giờ chúng ta chỉ việc gán Macro LayDuLieu vừa viết ở trên vào Mũi tên thứ 1 (từ trái qua phải)

Assign Macro lenh lay du lieu

Khi đó muốn sửa dữ liệu nào, chúng ta chỉ cần chọn dòng cần sửa, sau đó bấm vào Mũi tên, dữ liệu sẽ được tự động đưa sang Form sửa:

Macro get data to edit

Bước 3: Viết code xóa nội dung trong Form sửa

Trong trường hợp chúng ta muốn xóa nội dung trong Form sửa dữ liệu về lại trạng thái không có nội dung gì, chúng ta có thể sử dụng thuộc tính .ClearContent cho đối tượng Range như sau:

Sub XoaDuLieu()

With Sheet1
.Range(“J2, H5:L5, H8:L8”).ClearContents
End With

End Sub

Gán macro XoaDuLieu vào biểu tượng Shape hình X bằng Assign Macro tương tự như trong bước 2 nhé.

Bước 4: Viết code lưu nội dung trong Form sửa trở lại dòng chứa dữ liệu cần sửa

Để lưu nội dung từ Form sửa trở lại bảng dữ liệu, chúng ta thực hiện viết giống như lệnh lấy dữ liệu từ Bảng sang Form sửa, nhưng thứ tự ngược lại như sau:

Sub LuuDuLieu()

‘Khai báo biến xác định dòng sửa = dòng lưu dữ liệu

Dim DongSua As Long
DongSua = Sheet1.Range(“J2”).Value

‘Thực hiện lưu dữ liệu từ Form sửa vào bảng dữ liệu theo dòng sửa

With Sheet1
.Range(“A” & DongSua).Value = .Range(“H5”).Value
.Range(“B” & DongSua).Value = .Range(“J5”).Value
.Range(“C” & DongSua).Value = .Range(“H8”).Value
.Range(“D” & DongSua).Value = .Range(“J8”).Value
.Range(“E” & DongSua).Value = .Range(“L8”).Value
End With

‘Gọi lệnh Xóa dữ liệu trong Form sửa sau khi đã hoàn thành việc lưu dữ liệu

Call XoaDuLieu

‘Mở thông báo bằng msgbox về việc đã lưu thành công

Msgbox “Luu du lieu thanh cong”

End Sub

Gán Macro LuuDuLieu vào Mũi tên thứ 2 (từ phải qua trái) bằng Assign Macro tương tự như trong bước 2 nhé.

Như vậy là chúng ta đã hoàn thành được quy trình sửa dữ liệu trong bảng tính Excel bằng VBA rồi.

Trong trường hợp chúng ta muốn thực hiện với Worksheet đang khóa (Protect Sheet), chúng ta chỉ cần thêm câu lệnh:

  • Sheet1.Unprotect ở đầu đoạn code (trước khi thực hiện các macro Lấy dữ liệu, Lưu dữ liệu, ngay sau dòng Sub, trước các dòng lệnh khác)
  • Sheet1.Protect ở cuối đoạn code (trước dòng lệnh End Sub của các macro Lấy dữ liệu, Lưu dữ liệu)

Sub LayDuLieu()

Sheet1.Unprotect

…

Sheet1.Protect

End Sub

Chúc các bạn áp dụng thành công kiến thức này vào công việc!


Tác giả: duongquan211287

·
·
·
Bài viết khác của cùng tác giả

  • Tất cả
  • Python
  • SQL
  • VBA

3.000.000VND 1.800.000VND
PYXL101
Xem chi tiết

3.000.000VND 1.600.000VND
SQL100
Xem chi tiết

499.000VND 199.000VND
PY100
Xem chi tiết

Bài viết liên quan

Tạo công cụ theo dõi Portfolio tiền điện tử với Excel và Power Query

Đối tượng Range trong Excel VBA

Power Automate Desktop là gì, ứng dụng thực tế của Power Automate Desktop

Đối tượng Worksheet trong Excel VBA

Đối tượng Workbook trong Excel VBA

Đối tượng Application trong Excel VBA


Khóa học liên quan

Khóa học Tự động hóa Excel với lập trình VBA cho người mới bắt đầu
Chi tiết khóa học

Khóa học Lập trình VBA nâng cao trong Excel
Chi tiết khóa học

  

© Học Gia Sư Kế Toán. All rights reserved.

My Lê

My Lê

My Lê tên thật là Mê Ly đã có 10 năm kinh nghiệm trong ngành kế toán.

Next Post
Công chức nhà nước học lập trình VBA để không tụt hậu trong Cuộc cách mạng Công nghệ 4.0

Công chức nhà nước học lập trình VBA để không tụt hậu trong Cuộc cách mạng Công nghệ 4.0

Recommended

Hướng dẫn cách tạo danh sách phụ thuộc nhau trong Excel bằng VBA

Hướng dẫn cách tạo danh sách phụ thuộc nhau trong Excel bằng VBA

1 tháng ago
Cách thêm các số 0 vào đầu các giá trị trong Excel

Cách thêm các số 0 vào đầu các giá trị trong Excel

1 tháng ago

Tin mới nhất

    Fanpage

    • Liên hệ
    • Giới thiệu
    • Đặt quảng cáo
    Liên hệ chúng tôi qua email : hocgiasuketoan.com@gmail.com

    © 2022 Hocgiasuketoan Premium magazine by Hocgiasuketoan

    No Result
    View All Result
    • Trang chủ
    • Giới thiệu
      • Học gia sư kế toán tại Hà Nội
    • Excel
    • Kế toán
    • Kinh nghỉệm
    • DAX
    • VBA
    • Văn bản
    • Access
    • Liên hệ
      • Chính sách bảo mật

    © 2022 Hocgiasuketoan Premium magazine by Hocgiasuketoan

    Welcome Back!

    Login to your account below

    Forgotten Password?

    Retrieve your password

    Please enter your username or email address to reset your password.

    Log In