Mở lớp học Lập trình VBA trong Excel CƠ BẢN - Hà Nội, khai giảng 17h30, 28/05/2017

Liên hệ QC
Lập trình kết nối CSDL trong máy tính phần lớn chúng ta quen kết nối tới CSDL nằm tại máy có file chương trình chạy, hoặc trong mạng LAN, ít người biết tới kết nối qua Internet, có thể từ trước chúng ta không có giải pháp nào cho việc này...
Video này tôi hướng dẫn mọi người dùng ADO kết nối tới CSDL Access trong mạng LAN, với các CSDL khác như Excel, Foxpro, SQL Server.... cũng tương tự, chỉ khác phần khai báo ConnectionString. Đây là đoạn video hướng dẫn căn bản và đơn giản tối đa để những người mới học lập trình CSDL có thể thực hành và làm ngay được.
Các CSDL Access, Excel, Foxpro, Paradox,... chỉ có thể chia sẻ qua mạng LAN và có những hạn chế về bảo mật, không thể chia sẻ qua Internet. Trong video này tôi đưa ra một giải pháp mới với Add-in A-Tools cho phép chúng ta kết nối CSDL qua Internet với những loại CSDL mà bình thường không thể làm được.
Hy vọng video giúp ích được nhiều người bước đầu tiếp cận vào lập trinhg CSDL trong Excel và những người đã làm và tìm ra được giải pháp mới cho việc kết nối CSDL qua internet vào Excel.

[video=youtube;lSyoR1XFte8]https://www.youtube.com/watch?v=lSyoR1XFte8[/video]​
 
Trong lập trình VBA, Hàm và Thủ tục là hai yếu tố chính để chạy các câu lệnh. Dưới đây là hàm và thủ tục cơ bản để kiểm tra phiên bản của Excel mà mình đang sử dụng.
Để chạy hàm và thủ tục, các bạn cần copy code dưới đây và làm theo các bước sau:
Bước 1: Copy code
[GPECODE=vb]
'HAM TRA VE PHIEN BAN CUA EXCEL
Function GetXlVersion() As String
GetXlVersion = Val(Application.Version)
End Function


'THU TUC TRA VE PHIEN BAN CUA EXCEL
Sub GetXlVersion1()
Dim Version As Variant
Version = Val(Application.Version)
MsgBox "Phien ban Office cua ban la Version" & Version
End Sub
[/GPECODE]
Bước 2:Vào môi trường lập trình (nhấn tổ hợp phím ALT+F11) -> vào menu Insert -> chọn Module để tạo module.
Sau đó các bạn pate code vừa copy ở trên vào module vừa tạo.

version.jpg
Bước 3: Các bạn trở về môi trường bảng tính, để chạy hàm thì các bạn đặt chuột vào 1 ô và gõ giống như với hàm trong Excel, ví dụ ở đây là ô B4=GetXlVersion().

version1.jpg

Rồi các bạn nhận Enter như hàm Excel thông thường để nhận kết quả.

version2.jpg

Bước 4: Để chạy thủ tục thì các bạn vào Developer, vào Insert để tạo nút bấm. Khi tạo nút bấm, sẽ có thông báo gán macro, bạn chọn vào tên macro cần gán rồi chọn Ok.

version4.jpg

Bước 5: Khi các bạn click vào OK, sẽ có 1 nút bấm trên màn hình thì các bạn vào nút bấm sữa tên theo ý mình. Tiếp theo các bạn các bạn click chuột trái ra ngoài nút bấm, sau đó các bạn lại click chuột trái lên nút bấm để nhận kết quả. Ở đây mình hiển thì dong thông báo bằng MsgBox.

version3.jpg

Đây là những hàm và thủ tục cơ bản, các bạn có thể thay thế hoặc tạo mới nhiều hàm trên Excel bằng các hàm mà bạn lập trình trong VBA.
Để tìm hiểu chuyên sâu hơn về các hàm và thủ tục trong VBA, các bạn tham khảo tại khóa đào tạo VBA cơ bản của công ty. Link khóa học: http://www.bluesofts.net/daotaothuchanh/daotaovbacoban.html
 
Mình xin chia sẽ cho các bạn một số hàm cơ bản viết bằng VBA thay thế cho việc gõ công thức trong Excel. Dưới đây là hàm tính thuế và hàm tính tuổi mà chúng ta chỉ cần đưa các đối số vào trong công thức cho phù hợp. Để thực hành các hàm dưới đây, các bạn làm theo các bước sau:
Giả sử đây là 2 bảng dữ liệu có sẵn, chúng ta cần làm công thức tại cột tiền thuế và cột tuổi.

vb2.jpg

Bước 1: Các bạn tạo mới module và copy code dưới đây vào trong module (các bước tạo module giống như các bài viết trước của mình)
[GPECODE=vb]
'CODE
Function TienThue(Slg, Dgia, TyleThue) As Double
TienThue = Slg * Dgia * TyleThue
End Function


Function TinhTuoi(ByVal dNgaySinh As Date) As Byte
TinhTuoi = Year(Date) - Year(dNgaySinh)
End Function
[/GPECODE]

vb1.jpg

Bước 2: Các bạn vào môi trường bảng tính, tại cột Tiền thuế, các bạn gõ công thức: E5=TienThue(C5,D5,$C$3), rồi các bạn nhấn Enter và copy cho các ô còn lại.

vb3.jpg

Bước 3: Tại cột Tuổi, các bạn gõ công thức: K5=TinhTuoi(I5)

vb4.jpg
Bước 4: Sau khi hoàn thành việc gõ công thức, các bạn copy cho các ô còn lại để nhận kết quả.

vb5.jpg
Đây là một số hàm cơ bản mà các bạn có thể tự viết thay thế cho việc phải gõ từng công thức trong Excel, với kiến thức VBA cơ bản sẽ tăng hiệu quả công việc, giảm thời gian làm việc,...
Để tìm hiểu về khóa học VBA cơ bản, các bạn vào đây: http://www.bluesofts.net/daotaothuchanh/daotaovbacoban.html
 
Chia sẽ cho các bạn hàm đếm số ô trống trong một vùng trên Excel, để chạy hàm, các bạn làm theo các bước sau:
Giả sử chúng ta có một vùng dữ như sau:

vb1.jpg

Bước 1: Các bạn vào môi trường lập trình, tạo một module và copy code dưới đây vào trong module.

[GPECODE=vb]
Function DemOTrong(rng As Range) As Long
Dim TongSoO As Long, OKhacTrong As Integer
TongSoO = rng.Cells.Count
OKhacTrong = WorksheetFunction.CountA(rng)
DemOTrong = TongSoO - OKhacTrong
End Function
[/GPECODE]
vb2.jpg
Bước 2: Các bạn vào môi trường bảng tính, các bạn gõ công thức tại ô E8=DemOTrong(A1:D6)

vb3.jpg

Bước 3: Các bạn nhấn Enter để nhận kết quả.

vb4.jpg
Các bạn tải file đính kèm để thực hành.
Để tìm hiểu về khóa đào tạo của công ty, các bạn xem tại đây. Link khóa học: http://bluesofts.net/daotaothuchanh/daotaovbacoban.html
 

File đính kèm

  • dem o trong.xls
    32 KB · Đọc: 1
Lần chỉnh sửa cuối:
Chia sẽ thủ tục ẩn hiện các sheet trừ sheet đầu tiên, khi bạn click vào nút bấm, nếu các sheet còn lại trừ sheet đầu tiên mà chưa ẩn thì nó tự động ẩn, còn nếu những sheet trừ sheet đầu tiên mà ẩn thì nó sẽ hiển thị. Để xem cụ thể bài toán, các bạn làm theo các bước dưới đây:

Bước 1: Các bạn copy code dưới đây vào trong module (Module tạo theo hướng dẫn của các bài trước).
[GPECODE=vb]
Sub AnHienSheet()
Dim Sh As Worksheet
Dim I As Long
'An cac sheet trong sheets tru sheet dau tien
For Each Sh In ThisWorkbook.Sheets
I = I + 1
If I <> 1 Then
Sh.Visible = Not Sh.Visible
End If
Next
End Sub
[/GPECODE]

vb2.jpg
Bước 2: Các bạn vào môi trường bảng tính, tạo 1 nút bấm và gán Macro bạn vừa tạo vào nút bấm (để tạo và gán macro các bạn xem lại các bài trước), rồi click chuột trái ra ngoài.

vb1.jpg
Bước 3: Các bạn click chuột vào nút bấm để nhận kết quả.

vb3.jpg
Bước 4: Sau khi ẩn các sheet trừ sheet đầu tiên, các bạn lại click chuột trái vào nút bấm lần 2 thì sẽ tự động hiển thị lại các sheet.

vb1.jpg
Các bạn tải file ví dụ ở mục đính kèm nhé.
Để tìm hiểu thêm nhiều hàm và thủ tục trong VBA, các bạn tìm hiểu thêm tại khóa học VBA trong excel cơ bản của công ty.
Link khóa học: http://bluesofts.net/daotaothuchanh/daotaovbacoban.html
 

File đính kèm

  • AnHienSheet.xlsm
    17.7 KB · Đọc: 3
Lần chỉnh sửa cuối:
có lớp online chưa thầy
Chào bạn, hiện tại công ty đã có lớp học online rồi nhé. Hình thức học là sẽ học đồng thời với khóa học Offline, trong quá trình học, bên mình sẽ phát video trực tuyến qua FB hoặc Youtobe và cấp link cho bạn học. Trong lúc đang học, nếu có vấn đề gì chưa hiểu, bạn cmt hoặc inbox lại, bên mình sẽ có người giải đáp giúp bạn nhé. Bạn gửi thông tin đăng ký sớm để bên mình chốt danh sách học viên, chuẩn bị cho buổi học đầu tiên vào lúc 17h30 ngày 30/10 nhé.
Bạn xem thêm thông tin chi tiết tại đây: http://bluesofts.net/daotaothuchanh/daotaovbacoban.html
 
Thủ tục gán dữ liệu vào một vùng bất kỳ trong bảng tính

Với Excel thuần túy, để điền dữ liệu lặp đi lặp lại vào một vùng bất kỳ nhiều lần, hiện tại phần lớn người dùng nhập liệu thuần tùy bằng cách gõ bàn phím mà ít ai biết được cách sử dụng công cụ lập trình trong Excel. Trong bài viết này mình xin chia sẽ các bạn thủ tục nhập liệu nhanh một vùng chỉ bằng click chuột.

Giả sử chúng ta có một file excel bất kỳ, giờ chúng ta muốn nhập liệu vào Sheet1, vùng từ A1:A3 với giá trị tương ứng là 100,200,300. Thông thường chúng ta sẽ nhập bằng bàn phím, còn dưới đây mình sẽ hướng dẫn các bạn viết một thủ tục đơn giản, rồi chỉ bằng 1 click chuột tự động nhập liệu.Để tự động nhập liệu bằng click chuột, các bạn làm như sau:

Bước 1: Các bạn vào môi trường lập trình trong Excel, tạo module (ALT+ F11 để vào môi trường lập trình, chọn vài Insert -> module) và copy code dưới đây vào module đấy.
[GPECODE=vb]Sub GanDoiTuong()
'Gan gia tri vao cac o: A1,A2,A3 trong "Sheet1"
Application.ActiveWorkbook.Sheets("Sheet1").Range("A1").Value = 100
Application.ActiveWorkbook.Sheets("Sheet1").Range("A2").Value = 200
Application.ActiveWorkbook.Sheets("Sheet1").Range("A3").Value = 300
End Sub
[/GPECODE]


vb%20code.jpg

Bước 2:
Tạo nút bấm: Sau khi các bạn copy xong code, các bạn trở về môi trường bảng tính, vào menu Developer -> Insert -> chọn vào Button.

vb%20button.jpg

Sau khi click vào Button-> các bạn đặt chuột vào 1 vị trí trong bảng tính, giữ chuột trái và kéo một vùng vừa đủ nút bấm theo mong muốn của bạn. Sẽ hiển thị ra bảng thông báo Assign Macro, bạn chọn vào macro cần gán -> chọn vào OK.

vb%20assign%20macro.jpg


Khi gán xong macro, bạn đổi tên nút bấm theo yêu cầu bài toán.

vba%20butbam.jpg


Bước 3: Bạn click chuột ra ngoài nút bấm, và click chuột trái lại lên nút bấm đề nhận kết quả.

vb%20hoan%20thanh.jpg


Tính ứng dụng của chức năng này: Trong môi trường doanh nghiệp file excel sẽ cần làm các báo cáo hàng tháng, cần nhập số liệu thời gian, văn bản,... cụ thể vào nhiều vùng khác nhau trong bảng tính nhiều lần. Các bạn tạo nút bấm để mỗi lần cập nhật không cần phải nhập lại vùng dữ liệu.
Các bạn vào đây tải file ví dụ: http://bluesofts.net/Baiviet/Laptrinh/VB_VBA/phong/gandulieu/gandoituong.xls
Link đăng ký tham gia khóa học Lập trình VBA cơ bản trong Excel:Link đăng ký học.


 
Giải bài toán tính THANHTIEN bằng công thức VBA cơ bản.
Các bạn chú ý thiết kế mẫu dữ liệu giống mình, vì code hiện tại mình chỉ đặt trong vùng cố đinh, khi các bạn hiểu code thì có thể mở rộng thêm nhiều vùng dữ liệu khác nhau.

B1: Các bạn vào file Excel cần tính thành tiền, nhấn tổ hợp phím ALT + F11 để vào môi trường lập trình.
B2: Các bạn tạo mới 1 module bằng cách: Vào Insert -> Module

B3: Các bạn copy code sau và pate vào module vừa tạo như sau:
1
2
3
4
5
6
7​
Sub Thanh_Tien()
Dim I As Long
For I = 3 To 8
Cells(I, 5).Value = Cells(I, 3).Value * Cells(I, 4).Value
Next I
End Sub






B4: Đặt chuột vào trong code bạn vừa pate và nhấn phím F5 để nhận kết quả.


Các bạn tham khảo thêm nhiều kiến thức bổ ích tại đây: http://bluesofts.net/daotaothuchanh/daotaovbacoban.html
Các bạn tải file đính kèm dưới đây về tham khảo nhé.
Chúc các bạn thành công!
 

File đính kèm

  • demo code vba tính thanh tiền.xlsm
    13.3 KB · Đọc: 1
[FONT=&amp]Với lập trình VBA, các bạn có thể tạo ra các hàm tính toán theo nhu cầu công việc của bản thân sao cho thuận lợi và phù hợp nhất.[/FONT]
[FONT=&amp]Giả sử chúng ta có 1 bài toán như sau:[/FONT]
[FONT=&amp]Yêu cầu: Tính tổng điểm với điều kiện như sau:[/FONT]
[FONT=&amp] Tổng điểm = Toán + Tin[/FONT]
[FONT=&amp] Nếu đạo đức là A thì tổng điểm sẽ được cộng thêm 1[/FONT]
[FONT=&amp] Nếu đạo đức là B thì tổng điểm sẽ được cộng thêm 0.5[/FONT]
[FONT=&amp] Nếu đạo đức là D thì tổng điểm sẽ được trừ đi 1[/FONT]
[FONT=&amp] Còn lại thì giữ nguyên tổng điểm[/FONT]

[FONT=&amp][/FONT]
[FONT=&amp]
[/FONT]
[FONT=&amp]Để tạo ra một hàm tính tổng điểm theo những điều kiện trên, các bạn làm theo các bước sau:[/FONT]
[FONT=&amp]Bước 1: Các bạn vào môi trường lập trình của Excel (phím tắt ALT+F11), tạo một module và copy code dưới đây vào trong module đấy:[/FONT]
[GPECODE=vb]
Function TinhTongDiem(toan As Double, tin As Double, DD As String) As Double
If DD = "A" Then
TinhTongDiem = toan + tin + 1
ElseIf DD = "B" Then
TinhTongDiem = toan + tin + 0.5
ElseIf DD = "D" Then
TinhTongDiem = toan + tin - 1
Else
TinhTongDiem = toan + tin
End If
End Function
[/GPECODE]
[FONT=&amp][/FONT]
[FONT=&amp]
[/FONT]
[FONT=&amp]Bước 2: Các bạn trở về môi trường bảng tính, tại cột tổng điểm bạn gõ hàm như sau: G2=TinhTongDiem(D2,E2,F2)[/FONT]
[FONT=&amp]
[/FONT]

[FONT=&amp][/FONT]
[FONT=&amp]
[/FONT]
[FONT=&amp]Sau khi gõ xong, các bạn nhấn Enter để nhận kết quả.[/FONT]
[FONT=&amp]
[/FONT]

[FONT=&amp][/FONT]
[FONT=&amp]
[/FONT]
[FONT=&amp]Bước 3: Tiếp theo các bạn copy công thức cho các ô còn lại để nhận két quả.[/FONT]
[FONT=&amp]
[/FONT]

[FONT=&amp][/FONT]
[FONT=&amp]
[/FONT]
[FONT=&amp]Với Excel thuần túy, để giải quyết các bài toán như trên, chúng ta phải gõ nguyên đầy đủ cả công thức, khi gửi công thức cho người khác, nhiều người sẽ bị rối. Vậy chúng ta nên tự tạo ra một bộ hàm riêng để xử lý công việc của chúng ta. Các nhân viên chỉ việc gõ tên hàm và các đối số là đã có những bản báo cáo, số liệu chính xác mà nhìn vào sẽ rất ngắn gọn, dễ hiểu.[/FONT]
[FONT=&amp]File ví dụ: [/FONT]http://www.mediafire.com/file/8on9x4p335c9xqu/bai+toan+tong+diem.xlsm
[FONT=&amp]Để tìm hiểu thêm nhiều kiến thức về VBA cơ bản, các bạn tham khảo thêm tại khóa đào tạo VBA cơ bản của công ty.[/FONT]
[FONT=&amp]Link khóa học: [/FONT][FONT=&amp]http://bluesofts.net/daotaothuchanh/daotaovbacoban.html[/FONT]
 
Lần chỉnh sửa cuối:
Tự viết hàm Xếp Loại trong Excel bằng VBA

[FONT=&amp]Với lập trình VBA, các bạn có thể tạo ra các hàm tính toán theo nhu cầu công việc của bản thân sao cho thuận lợi và phù hợp nhất.
[FONT=&amp]Giả sử chúng ta có 1 bài toán như sau:[/FONT]
[FONT=&amp]Căn cứ vào tổng điểm để xếp loại học sinh như sau
Dưới 10: Kém
Từ 10 đến 13.9: Trung bình
Từ 14 đến 16.9: Khá
Từ 17 đến 18.9: Giỏi
Ngược lại là Xuất Sắc
[/FONT]

[FONT=&amp]
vb1.jpg
[/FONT]

[FONT=&amp]
Để tạo ra một hàm tính tổng điểm theo những điều kiện trên, các bạn làm theo các bước sau:
Bước 1: Các bạn vào môi trường lập trình của Excel (phím tắt ALT+F11), tạo một module và copy code dưới đây vào trong module đấy:

[GPECODE=vb]
[/GPECODE]
[/FONT]
[/FONT]
[GPECODE=vb]Function XepLoai(tongdiem As Double) As String
If tongdiem < 10 Then
XepLoai = "Kem"
ElseIf tongdiem >= 10 And tongdiem <= 13.9 Then
XepLoai = "Trung binh"
ElseIf tongdiem >= 14 And tongdiem <= 16.9 Then
XepLoai = "Kha"
ElseIf tongdiem >= 17 And tongdiem <= 18.9 Then
XepLoai = "Gioi"
Else
XepLoai = "Xuat Sac"
End If
End Function[/GPECODE]
[FONT=&amp]
vb2.jpg


Bước 2
: Các bạn trở về môi trường bảng tính, tại cột tổng điểm bạn gõ hàm như sau: H2=XepLoai(G2)

[FONT=&amp]
vb3.jpg

[/FONT]

Sau khi gõ xong, các bạn nhấn Enter để nhận kết quả.

[FONT=&amp]
vb4.jpg

[/FONT]

Bước 3: Tiếp theo các bạn copy công thức cho các ô còn lại để nhận két quả.

[FONT=&amp]
vb5.jpg
[/FONT]


[FONT=&amp]Với Excel thuần túy, để giải quyết các bài toán như trên, chúng ta phải gõ nguyên đầy đủ cả công thức, khi gửi công thức cho người khác, nhiều người sẽ bị rối. Vậy chúng ta nên tự tạo ra một bộ hàm riêng để xử lý công việc của chúng ta. Các nhân viên chỉ việc gõ tên hàm và các đối số là đã có những bản báo cáo, số liệu chính xác mà nhìn vào sẽ rất ngắn gọn, dễ hiểu.[/FONT]
[/FONT]
File ví dụ: bluesofts.net/Baiviet/Laptrinh/VB_VBA/phong/hamxeploai/ham xep loai.xlsm
Để tìm hiểu thêm nhiều kiến thức về VBA cơ bản, các bạn tham khảo thêm tại khóa đào tạo VBA cơ bản của công ty.
Link khóa học: http://bluesofts.net/daotaothuchanh/daotaovbacoban.html
 
Tự viết hàm trả về Học Bổng theo yêu cầu

Trong các bài viết trước, mình đã hướng dẫn các bạn viết hàm tính tổng điểm có điều kiện, xếp loại dựa vào tổng điểm. Bài viết hôm nay mình sẽ hướng dẫn các bạn viết hàm trả về học bổng nếu thỏa mãn nhiều điều kiện.
Giả sử ta có bài toán như sau:
-> Học bổng bằng 100 nếu Tổng điểm từ 14 điểm trở lên và không có môn nào dưới 5. Đạo đức đạt loại A hoặc B.
[FONT=&amp]

vb1.jpg


Để tạo ra một hàm tính tổng điểm theo những điều kiện trên, các bạn làm theo các bước sau:
Bước 1: Các bạn vào môi trường lập trình của Excel (phím tắt ALT+F11), tạo một module và copy code dưới đây vào trong module đấy:
[GPECODE=vb]
Function HocBong(tongdiem As Double, toan As Double, tin As Double, daoduc As String) As Double
If tongdiem >= 14 And toan >= 5 And tin >= 5 And (daoduc = "A" Or daoduc = "B") Then
HocBong = 100
Else
HocBong = 0
End If
End Function
[/GPECODE]

vb2.jpg


Bước 2: Các bạn trở về môi trường bảng tính, tại cột tổng điểm bạn gõ hàm như sau: I2=HocBong(G2,D2,E2,F2)

vb3.jpg


Sau khi gõ xong, các bạn nhấn Enter để nhận kết quả.

vb4.jpg


Bước 3
: Tiếp theo các bạn copy công thức cho các ô còn lại để nhận két quả.

vb6.jpg

Với Excel thuần túy, để giải quyết các bài toán như trên, chúng ta phải gõ nguyên đầy đủ cả công thức, khi gửi công thức cho người khác, nhiều người sẽ bị rối. Vậy chúng ta nên tự tạo ra một bộ hàm riêng để xử lý công việc của chúng ta. Các nhân viên chỉ việc gõ tên hàm và các đối số là đã có những bản báo cáo, số liệu chính xác mà nhìn vào sẽ rất ngắn gọn, dễ hiểu.
File ví dụ: bluesofts.net/Baiviet/Laptrinh/VB_VBA/phong/Hamtinhhocbong/HamHocBong.xlsm
Để tìm hiểu thêm nhiều kiến thức về VBA cơ bản, các bạn tham khảo thêm tại khóa đào tạo VBA cơ bản của công ty.
Link khóa học: http://bluesofts.net/daotaothuchanh/daotaovbacoban.html

[/FONT]
 
Sắp xếp các sheet trong Excel tăng dần hoặc giảm dần

Một file Excel với nhiều sheet mà tên của nó không được sắp xếp theo trình tự sẽ khó quản lý. Sau đây tôi chia sẻ với các bạn phương pháp sắp xếp các sheet theo tên tăng dần hoặc giảm dần bằng VBA.

1. Mở file Excel cần sắp xếp các sheet. Copy code VBA
Vào môi trường VBA - Nhấn ALT+F11, vào menu Insert->Module, tại cửa sổ Module copy đoạn code dưới đây dán vào
'Bắt đầu COPY codes-----------------
'Tac gia: tuanktcdcn@yahoo.com - Tel: 0904.210.337
'Website: http://bluesofts.net

[GPECODE=vb]Sub Sapxep()
Dim x As VbMsgBoxResult
x = MsgBox("Chon cach sap xep ten sheet:" & vbNewLine & _
"""Yes"" - Tang dan" & vbNewLine & _
"""No"" - Giam dan" & vbNewLine & _
"""Cancel"" - Khong lam gi.", vbQuestion + vbYesNoCancel, "Sap xep Sheet tren tap tin Excel dang mo")

If x = vbCancel Then
Exit Sub
End If

Dim TraLoi(6 To 7) As String
TraLoi(6) = "tang dan" ' vbYes
TraLoi(7) = "giam dan" ' vbNo

SapxepSheet ActiveWorkbook, x = vbYes
MsgBox "Cac sheet da duoc sap xep " & TraLoi(x), vbInformation

End Sub

Sub SapxepMang(ByRef mList, Optional ByVal Tangdan As Boolean = True)
'Xep thu tu cua mang
Dim nDong As Long, nCot As Long, I As Long, J As Long

nDong = UBound(mList, 1)
If nDong > 0 Then
Dim cMin, cMin2 As String

For I = 1 To nDong
cMin = mList(I)
For J = I + 1 To nDong
If Tangdan Then
If StrComp(UCase(mList(J)), UCase(cMin)) < 0 Then
cMin2 = cMin
cMin = mList(J)
mList(J) = cMin2
End If
Else 'Giam dan
If StrComp(UCase(mList(J)), UCase(cMin)) > 0 Then
cMin2 = cMin
cMin = mList(J)
mList(J) = cMin2
End If
End If
Next J
mList(I) = cMin
Next I
End If
End Sub

Sub SapxepSheet(ByRef OnWorkbook As Workbook, Optional ByVal Tangdan As Boolean = True)
On Error GoTo Done:
Dim WS As Worksheet
Dim n As Long
n = OnWorkbook.Sheets.Count
ReDim ListSH(n)
I = 0
For Each WS In OnWorkbook.Sheets
I = I + 1
ListSH(I) = WS.Name
Next
Application.ScreenUpdating = False
Application.EnableEvents = False

SapxepMang ListSH, Tangdan

For I = 1 To n - 1
OnWorkbook.Sheets(ListSH(I)).Move Before:=OnWorkbook.Sheets(ListSH(n))
Next I
Done:
Application.ScreenUpdating = True
Application.EnableEvents = True
Set Sh = Nothing
End Sub

[/GPECODE]

Để xem thêm đầy đủ bài viết, các bạn vào đây:
http://bluesofts.net/cac-bai-hoc-hay-vba-trong-excel/328-sap-xep-cac-sheet-trong-excel-tang-dan-hoac-giam-dan.html
 
nhiều người làm kế toán mà còn không biết trong Excel có các sheet nữa kìa, mình rõ là gửi có đủ cả các thông tin mà họ cứ bảo không có xong bảo kiểm tra ở dưới thì mới biết.
 
Thủ tục tính chiết khấu, tiền hàng và phải trả bằng VBA

Trong Excel, để giải quyết 1 bảng tính bằng công thức excel thuần túy, việc file năng, tốc độ xử lý chậm trong mỗi lần cập nhật công thức là chuyển thường xuyên của nhân viên văn phòng. Vì thế mà Microsofts đã tạo ra ngôn ngữ lập trình trên Excel, chỉ việc click vào 1 nút thì toàn bộ dữ liệu được cập nhật, không hề có công thức excel trong bảng tinh. Ví dụ ta có bài toán như sau: Tính tiền hàng, chiết khấu 10% và phải trả các mặt hàng nếu tỉnh là "Hà Nội", để giải bài toán trên ta làm theo các bước sau:

1zb1bi8z2j9gff5zg.jpg

Bước 1: Các bạn vào môi trường lập trình của Excel (phím tắt ALT+F11), tạo một module và copy code dưới đây vào trong module đấy:
[gpecode=vb]Sub ChietKhau() Dim I As Long
For I = 5 To 14
Cells(I, 7).Value = Cells(I, 6).Value * Cells(I, 5).Value
Cells(I, 8).Value = 0
If Cells(I, 3).Value = "Ha Noi" Then
Cells(I, 8).Value = Cells(I, 7).Value * 0.1
End If
Cells(I, 9).Value = Cells(I, 7).Value - Cells(I, 8).Value
Next I
End Sub[/gpecode]

0zsu1no8x0uaidmzg.jpg

Bước 2:
Tạo nút bấm: Sau khi các bạn copy xong code, các bạn trở về môi trường bảng tính, vào menu Developer -> Insert -> chọn vào Button.

hgvdsihihdasonyzg.jpg

Sau khi click vào Button-> các bạn đặt chuột vào 1 vị trí trong bảng tính, giữ chuột trái và kéo một vùng vừa đủ nút bấm theo mong muốn của bạn. Sẽ hiển thị ra bảng thông báo Assign Macro, bạn chọn vào macro cần gán -> chọn vào OK.

brz373shj6jkqqyzg.jpg


Khi gán xong macro, bạn đổi tên nút bấm theo yêu cầu bài toán.

28x1u2t20mtnlcgzg.jpg

Bước 3
: Bạn click chuột ra ngoài nút bấm, và click chuột trái lại lên nút bấm đề nhận kết quả.

ms758a7k8qzikuuzg.jpg

Để xem đầy đủ nội dung khóa đào tạo VBA cơ bản, các bạn tham khảo ở link đây.
Link khóa học: http://bluesofts.net/daotaothuchanh/daotaovbacoban.html
Các bạn vào đây tải file ví dụ: DOWNLOAD

 
Các Khóa Đào Tạo Excel & VBA Từ Cơ Bản Đến Nâng Cao

Trung tâm đào tạo thực hành Bluesofts cung cấp các chương trình đào tạo uy tín, chất lượng cao liên quan đến các lĩnh vực Kế toán, Excel từ cơ bản đến nâng cao. Với đội ngũ các giảng viên, chuyên gia hàng đầu có kinh nghiệm thực tế lâu năm với các vị trí như Kế toán tổng hợp, Kế toán trưởng, Giám đốc doanh nghiệp, chúng tôi cam kết đem đến cho các học viên những kiến thức bổ ích và thực tế từ cơ bản đến nâng cao bằng những phương pháp đào tạo tiên tiến, dễ hiểu, chỉ dẫn trực tiếp và tận tình.
Bluesofts tự hào là doanh nghiệp cung cấp các phần mềm và đào tạo Excel chất lượng tốt nhất cho các doanh nghiệp!
(*) Khóa đào tạo lập trình VBA trong Excel căn bản: http://bluesofts.net/daotaothuchanh/daotaovbacoban.html
(*) Kháo Tạo báo cáo động trong Microsoft Excel và Add-in A-Tools: http://bluesofts.net/daotaothuchanh/dao-tao-ky-thuat-tao-bao-cao-dong-trong-microsoft-excel-va-add-in-a-tools.html
(*) Các khóa đào tạo Excel & VBA từ cơ bản đến nâng cao: http://www.bluesofts.net/daotaothuchanh/trung-tam-dao-tao-thuc-hanh-bluesofts.html

[video=youtube;UtwGn2x7cto]https://www.youtube.com/watch?v=UtwGn2x7cto[/video]​
 
Lọc dữ liệu theo yêu cầu trong Excel

Mình xin chia sẽ các bạn một bài toán cụ thể mà học viên học khóa học Lập trình VBA trong Excel cơ bản đã đưa ra yêu cầu theo nhu cầu thực tế của công ty bạn ấy. Phần dữ liệu mình có xóa bớt một số trường nhưng không làm ảnh hưởng tới yêu cầu và kết quả của bài toán.
Yêu cầu: Lọc ra MÃ HÀNG có SLG BÁN >0 hoặc SLG KHUYẾN MÃI > với yêu cầu như sau:
+ Nếu SLG BÁN>0 -> Lấy MÃ HÀNG từ bảng dữ liệu điền vào cột MÃ HÀNG , SLG BÁN vào cột SLG ở sheet kết quả cần hiển thị (Sheet2).
+ Nếu SLG BÁN>0 -> SLG KHUYẾN MÃI >0 -> Lấy MÃ HÀNG từ bảng dữ liệu điền vào cột MÃ HÀNG , SLG BÁN vào cột SLG BÁN, điền tiếp MÃ HÀNG đó vào dòng tiếp theo, SLG KHUYẾN MÃI vào dòng MÃ HÀNG vừa điền ở cổ SLG trong sheet kết quả cần hiển thị (Sheet2).
+ Nếu SLG KHUYẾN MÃI>0-> Lấy MÃ HÀNG từ bảng dữ liệu điền vào cột MÃ HÀNG, SLG KHUYẾN MÃI vào cột SLG ở sheet kết quả cần hiển thị (Sheet2)

x2pqbxbbdd7qpsczg.jpg


Bước 1:
Các bạn vào môi trường lập trình của Excel (phím tắt ALT+F11), tạo một module và copy code dưới đây vào trong module vừa tạo:
[gpecode=vb]Sub LayDuLieuTheoY()
Dim shData As Object
Dim shBaoCao As Object
Set shData = Sheets("PHX_HoaDon")
Set shBaoCao = Sheets("Sheet2")
Dim i As Long
Dim a As Long
a = shBaoCao.Range("B" & shBaoCao.Columns(1).Rows.Count).End(xlUp).Row
For i = 8 To shData.Range("B" & shData.Columns(1).Rows.Count).End(xlUp).Row
If shData.Cells(i, 4).Value > 0 Then
a = a + 1
shBaoCao.Cells(a, 2).Value = shData.Cells(i, 2).Value
shBaoCao.Cells(a, 3).Value = shData.Cells(i, 4).Value
If shData.Cells(i, 5).Value > 0 Then
a = a + 1
shBaoCao.Cells(a, 2).Value = shData.Cells(i, 2).Value
shBaoCao.Cells(a, 3).Value = shData.Cells(i, 5).Value
End If
Else
If shData.Cells(i, 5).Value > 0 Then
a = a + 1
shBaoCao.Cells(a, 2).Value = shData.Cells(i, 2).Value
shBaoCao.Cells(a, 3).Value = shData.Cells(i, 5).Value
End If
End If
Next i
End Sub[/gpecode]
Sau khi copy code vào module thì code hiển thị trong module như sau:

lavhyl6cndd9bgczg.jpg

Bước 2: Tạo nút bấm: Sau khi các bạn copy xong code, các bạn trở về môi trường bảng tính, vào menu Developer -> Insert -> chọn vào Button.

acvg625q92qi5cqzg.jpg

Sau khi click vào Button-> các bạn đặt chuột vào 1 vị trí trong bảng tính, giữ chuột trái và kéo một vùng vừa đủ nút bấm theo mong muốn của bạn. Sẽ hiển thị ra bảng thông báo Assign Macro, bạn chọn vào macro cần gán -> chọn vào OK.

bqa5pmc9pgaijq5zg.jpg


Khi gán xong macro, bạn đổi tên nút bấm theo yêu cầu bài toán.

mvias3r14vs4t4uzg.jpg


Bước 3
: Bạn click chuột ra ngoài nút bấm, và click chuột trái lại lên nút bấm đề nhận kết quả.

x0ekceiy8y231kdzg.jpg


Để xem đầy đủ nội dung khóa đào tạo VBA cơ bản, các bạn tham khảo ở link đây. Link khóa học
Các bạn vào đây tải file ví dụ: DOWNLOAD

 
Lọc dữ liệu theo yêu cầu trong Excel

Mình xin chia sẽ các bạn một bài toán cụ thể mà học viên học khóa học Lập trình VBA trong Excel cơ bản đã đưa ra yêu cầu theo nhu cầu thực tế của công ty bạn ấy. Phần dữ liệu mình có xóa bớt một số trường nhưng không làm ảnh hưởng tới yêu cầu và kết quả của bài toán.
Yêu cầu: Lọc ra MÃ HÀNG có SLG BÁN >0 hoặc SLG KHUYẾN MÃI > với yêu cầu như sau:
+ Nếu SLG BÁN>0 -> Lấy MÃ HÀNG từ bảng dữ liệu điền vào cột MÃ HÀNG , SLG BÁN vào cột SLG ở sheet kết quả cần hiển thị (Sheet2).
+ Nếu SLG BÁN>0 -> SLG KHUYẾN MÃI >0 -> Lấy MÃ HÀNG từ bảng dữ liệu điền vào cột MÃ HÀNG , SLG BÁN vào cột SLG BÁN, điền tiếp MÃ HÀNG đó vào dòng tiếp theo, SLG KHUYẾN MÃI vào dòng MÃ HÀNG vừa điền ở cổ SLG trong sheet kết quả cần hiển thị (Sheet2).
+ Nếu SLG KHUYẾN MÃI>0-> Lấy MÃ HÀNG từ bảng dữ liệu điền vào cột MÃ HÀNG, SLG KHUYẾN MÃI vào cột SLG ở sheet kết quả cần hiển thị (Sheet2)



Bước 1:
Các bạn vào môi trường lập trình của Excel (phím tắt ALT+F11), tạo một module và copy code dưới đây vào trong module vừa tạo:
[gpecode=vb]Sub LayDuLieuTheoY()
Dim shData As Object
Dim shBaoCao As Object
Set shData = Sheets("PHX_HoaDon")
Set shBaoCao = Sheets("Sheet2")
Dim i As Long
Dim a As Long
a = shBaoCao.Range("B" & shBaoCao.Columns(1).Rows.Count).End(xlUp).Row
For i = 8 To shData.Range("B" & shData.Columns(1).Rows.Count).End(xlUp).Row
If shData.Cells(i, 4).Value > 0 Then
a = a + 1
shBaoCao.Cells(a, 2).Value = shData.Cells(i, 2).Value
shBaoCao.Cells(a, 3).Value = shData.Cells(i, 4).Value
If shData.Cells(i, 5).Value > 0 Then
a = a + 1
shBaoCao.Cells(a, 2).Value = shData.Cells(i, 2).Value
shBaoCao.Cells(a, 3).Value = shData.Cells(i, 5).Value
End If
Else
If shData.Cells(i, 5).Value > 0 Then
a = a + 1
shBaoCao.Cells(a, 2).Value = shData.Cells(i, 2).Value
shBaoCao.Cells(a, 3).Value = shData.Cells(i, 5).Value
End If
End If
Next i
End Sub[/gpecode]
Sau khi copy code vào module thì code hiển thị trong module như sau:


Bước 2: Tạo nút bấm: Sau khi các bạn copy xong code, các bạn trở về môi trường bảng tính, vào menu Developer -> Insert -> chọn vào Button.


Sau khi click vào Button-> các bạn đặt chuột vào 1 vị trí trong bảng tính, giữ chuột trái và kéo một vùng vừa đủ nút bấm theo mong muốn của bạn. Sẽ hiển thị ra bảng thông báo Assign Macro, bạn chọn vào macro cần gán -> chọn vào OK.



Khi gán xong macro, bạn đổi tên nút bấm theo yêu cầu bài toán.



Bước 3
: Bạn click chuột ra ngoài nút bấm, và click chuột trái lại lên nút bấm đề nhận kết quả.



Để xem đầy đủ nội dung khóa đào tạo VBA cơ bản, các bạn tham khảo ở link đây. Link khóa học
Các bạn vào đây tải file ví dụ: DOWNLOAD

Chả hiểu nói về đề tài gì
 
Chả hiểu nói về đề tài gì

Chào bạn,
Tiêu đề ghi rõ là lọc dữ liệu theo yêu cầu trong excel rồi bạn.
Đây là bài toán thực tế của một học viên họ nhờ mình hỗ trợ, nội dung yêu cầu cụ thể như ở hình 1 của bài viết. Cầu đầu tiên trong bài viết mình cũng đã ghi rõ ràng "Mình xin chia sẽ các bạn một bài toán cụ thể mà học viên học khóa học Lập trình VBA trong Excel cơ bản đã đưa ra yêu cầu theo nhu cầu thực tế của công ty bạn ấy".
Đề nghị bạn đọc kỹ rồi mới trả lời bài viết.
Cảm ơn bạn!.
 
Chào bạn,
Tiêu đề ghi rõ là lọc dữ liệu theo yêu cầu trong excel rồi bạn.
Đây là bài toán thực tế của một học viên họ nhờ mình hỗ trợ, nội dung yêu cầu cụ thể như ở hình 1 của bài viết. Cầu đầu tiên trong bài viết mình cũng đã ghi rõ ràng "Mình xin chia sẽ các bạn một bài toán cụ thể mà học viên học khóa học Lập trình VBA trong Excel cơ bản đã đưa ra yêu cầu theo nhu cầu thực tế của công ty bạn ấy".
Đề nghị bạn đọc kỹ rồi mới trả lời bài viết.
Cảm ơn bạn!.
Là tôi nói tiêu đề đâu có khớp với cái "để xem đầy đủ khóa học...". Tiêu đề nói về lọc dữ liệu, cuối bài thì lại nói về khóa học nên mới bảo là không khớp. Lọc là lọc mà học là học hoặc là cả hai thì đưa luôn vào tiêu đề bài viết.
Có lẽ là bạn cần cân nhắc kỹ trước khi viết đầu b ài
 
Web KT
Back
Top Bottom