Câu hỏi

28/05/2013 07:43
Hỏi về bảng tính Excel?
Có 2 bảng tính Excel gồm:
- Bảng 1 có các trường Masanpham, tensanpham, toncuoi nằm trên sheet1 (A1:C1000).
- Bảng 2 có các trường Masanpham, tensanpham, soluongban trên sheet2 (A1:C2).
Tôi muốn khi nhập các thông tin trên các ô thuộc sheet2 (A2; B2;C2) và chạy 1 macro thì chương trình sẽ tìm kiếm đúng mã sản phẩm trên bảng 1 và trừ đi lượng hàng bán ra.
namtuoc
28/05/2013 07:43
- Bảng 1 có các trường Masanpham, tensanpham, toncuoi nằm trên sheet1 (A1:C1000).
- Bảng 2 có các trường Masanpham, tensanpham, soluongban trên sheet2 (A1:C2).
Tôi muốn khi nhập các thông tin trên các ô thuộc sheet2 (A2; B2;C2) và chạy 1 macro thì chương trình sẽ tìm kiếm đúng mã sản phẩm trên bảng 1 và trừ đi lượng hàng bán ra.
Danh sách câu trả lời (1)

Nếu bạn biết lập trình bằng ngôn ngữ VBA và biết dùng đối tượng "Range" để truy xuất các cell trong các worksheet Excel thì việc viết macro thực hiện yêu cầu riêng của bạn là không khó. Sau đây tôi xin trình bày qui trình điển hình để giải quyết bài toán của bạn:
1. Chạy Excel, mở file Excel chứa 2 worksheet của bạn. Chọn menu Tool.Macro.Macros để hiển thị cửa sổ Macro, nhập tên macro mới (thí dụ là Update), chọn tên file Excel của bạn trong danh sách "Macros in", chọn button Create để tạo mới macro này trong file Excel của bạn.
2. Viết code VBA cho thủ tục Update như sau:
Sub Update()
'Khai báo các biến cần dùng
Dim Rgn1 As Range
Dim Rgn2 As Range
Dim i As Integer, j As Integer
'khởi động các vùng cell cần xử lý
Set Rgn1 = Range("Sheet1!A1:C1000")
Set Rgn2 = Range("Sheet2!A2:C2")
'duyệt xử lý từng hàng dữ liệu trong Rgn1
For i = 1 To Rgn1.Rows.count
If (Rgn1.Item(i, 1) = Rgn2.Item(1, 1)) And (Rgn1.Item(i, 2) = Rgn2.Item(1, 2)) Then
'tìm được phần tử ở hàng i cần hiệu chỉnh
Rgn1.Item(i, 3) = Rgn1.Item(i, 3) - Rgn2.Item(1, 3)
End If
Next i
End Sub
3. Chọn menu File.Close and Return to Microsoft Excel.
4. Tạo icon toolbar mới và gán icon này với macro đã viết: chọn menu View.Toolbars.Customize. Duyệt tìm và chọn mục Macros trong listbox "Categories", chọn mục "Custom Button" và "drag" nó về vị trí mong muốn trong 1 toolbar nào đó hiện có. Sau khi đã có icon trong toolbar mong muốn, chọn nó rồi nhấn chuột vào listbox "Modify Selection" trong cửa sổ Customize, chọn mục "Assign macro" để hiển thị cửa sổ "Assign macro", chọn macro "Update" trong danh sách rồi chọn OK để hoàn thành tác vụ.
5. Bây giờ bạn hãy thử nhập các thông tin trên các ô thuộc sheet2 (A2; B2; C2) rồi chọn icon miêu tả macro vừa tạo trong Toolbar, thủ tục Update sẽ chạy, tìm kiếm đúng mã sản phẩm trên sheet1 và trừ đi lượng hàng bán ra.
1. Chạy Excel, mở file Excel chứa 2 worksheet của bạn. Chọn menu Tool.Macro.Macros để hiển thị cửa sổ Macro, nhập tên macro mới (thí dụ là Update), chọn tên file Excel của bạn trong danh sách "Macros in", chọn button Create để tạo mới macro này trong file Excel của bạn.
2. Viết code VBA cho thủ tục Update như sau:
Sub Update()
'Khai báo các biến cần dùng
Dim Rgn1 As Range
Dim Rgn2 As Range
Dim i As Integer, j As Integer
'khởi động các vùng cell cần xử lý
Set Rgn1 = Range("Sheet1!A1:C1000")
Set Rgn2 = Range("Sheet2!A2:C2")
'duyệt xử lý từng hàng dữ liệu trong Rgn1
For i = 1 To Rgn1.Rows.count
If (Rgn1.Item(i, 1) = Rgn2.Item(1, 1)) And (Rgn1.Item(i, 2) = Rgn2.Item(1, 2)) Then
'tìm được phần tử ở hàng i cần hiệu chỉnh
Rgn1.Item(i, 3) = Rgn1.Item(i, 3) - Rgn2.Item(1, 3)
End If
Next i
End Sub
3. Chọn menu File.Close and Return to Microsoft Excel.
4. Tạo icon toolbar mới và gán icon này với macro đã viết: chọn menu View.Toolbars.Customize. Duyệt tìm và chọn mục Macros trong listbox "Categories", chọn mục "Custom Button" và "drag" nó về vị trí mong muốn trong 1 toolbar nào đó hiện có. Sau khi đã có icon trong toolbar mong muốn, chọn nó rồi nhấn chuột vào listbox "Modify Selection" trong cửa sổ Customize, chọn mục "Assign macro" để hiển thị cửa sổ "Assign macro", chọn macro "Update" trong danh sách rồi chọn OK để hoàn thành tác vụ.
5. Bây giờ bạn hãy thử nhập các thông tin trên các ô thuộc sheet2 (A2; B2; C2) rồi chọn icon miêu tả macro vừa tạo trong Toolbar, thủ tục Update sẽ chạy, tìm kiếm đúng mã sản phẩm trên sheet1 và trừ đi lượng hàng bán ra.
Trả lời câu hỏi
Câu hỏi lĩnh vực Câu hỏi khác
Rao vặt Siêu Vip