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 (1 người xem)

Liên hệ QC

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

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,845
Được thích
10,338
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
LẬP TRÌNH VBA TRONG EXCEL CƠ BẢN

banner-vbacoban.jpg

Khóa học “Lập trình VBA trong Excel cơ bản” cho phép người làm Excel viết ra những mã lệnh-Macro để tự động phân tích, định dạng, tạo báo cáo chỉ bằng cú nhấp chuột như trong các phần mềm mà không phải thủ công lập công thức Excel. Học lớp VBA cơ bản học viên tự tạo thêm được các hàm-Function mà Excel không có. Đọc hiểu được những đoạn code trên mạng để lắp ghép vào file Excel của mình. Học hết 10 bài học trong 10 buổi các học viên có khả năng lập trình trong Excel để khai thác, điều khiển các đối tượng quan trọng như Application, Workbook, Worksheet, Range, Userform, Menu bar, Ribbon, tạo các hàm và thủ tục để tự động hóa việc phân tích và tổng hợp dữ liệu với tốc độ nhanh hơn cách làm công thức Excel thông thường.
Với phương pháp đào tạo phân tích và thực hành tại lớp kèm với các ví dụ điển hình và thực tế sẽ giúp các học viên dễ hiểu, nắm bắt kiến thức nhanh, phát huy được kiến thức đã học để áp dụng vào công việc thực tế của mình.
Điều kiện để học khóa học “Lập trình VBA trong Excel cơ bản” các bạn cần phải có kiến thức Excel cơ bản hoặc đã học xong lớp “Excel cơ bản” do công ty Bluesofts tổ chức.
+ Tên lớp học: “Lập trình VBA trong Excel cơ bản
+ Khai giảng: 17h30, ngày 28/05/2017 lịch học chính thức sẽ học vào tối thứ 3 và thứ 5 hàng tuần.
+ Phụ trách chính: Th.S Nguyễn Duy Tuân – ĐT: 0904210337 – Mail: duytuan@bluesofts.net
+ Thời gian học: 10 buổi, thời gian mỗi buổi học 120 phút. Tuần học 3 buổi
+ Hình thức học: HỌC TẠI LỚP hoặc HỌC ONLINE
(Học ONLINE là học viên ngồi tại nhà xem và nghe giáo viên hướng dẫn trực tiếp trên máy tính, hỏi đáp và trả lời trực tiếp, nghe và xem các nội dung thảo luận của lớp học).
+ Phòng học tại phòng đào tạo Công ty Cổ phần BLUESOFTS
+ Địa chỉ: Phòng 1012, tầng 10 CT1A-ĐN2 Đường Hàm Nghi, KĐT Mỹ Đình 2, Từ Liêm, Hà Nội
+ Học phí: 1.8 triệu đồng. Đã bao gồm cả tài liệu.
(Đối với những học viên học lần đầu, khi đóng tiền trước 3 ngày được giảm 100.000 đồng).
ĐĂNG KÝ THAM GIA
BẤM VÀO ĐÂY XEM NỘI DUNG KHÓA HỌC VBA VÀ ĐĂNG KÝ
Các học viên có thể chuyển khoản hoặc đóng tiền trực tiếp tại văn phòng Công ty Cổ phần BLUESOFTS – P1012 - Tầng 10 - CT1A DN2 - Đường Hàm Nghi - KĐT Mỹ Đình 2 - Từ Liêm - Hà Nội.
Số điện thoại tư vấn: 04.379.17200 - 0904.210.337
Tư vấn online: https://www.facebook.com/groups/daotaothuchanh/
http://www.bluesofts.net

NỘI DUNG HỌC:
Bài 1:
VBA là gì. Tìm hiểu các đối tượng trong Excel. Tạo, sửa, xóa macro
Bài 2: Ngôn ngữ lập trình VBA. Kiểu dữ liệu trong VBA. Khai báo hằng số và biến. Ý nghĩa các từ khóa trong khai báo: Private, Public, Static
Bài 3: Kỹ thuật viết thủ tục và hàm. Cách khai báo và truyền tham số cho thủ tục và hàm. Ý nghĩa ByVal, Byref
Bài 4: Tìm hiểu các hàm sẵn có trong VBA. Các nhóm hàm: văn bản; thời gian, số học, kiểm tra thông tin, hàm giao diện (MsgBox, InputBox)
Bài 5: Kỹ thuật viết lệnh rẽ nhánh, hàm logic: If..Then..Else, IIF(), Select Case. Tạo Label, lệnh Goto
Bài 6: Kỹ thuật tạo lệnh lặp – vòng lặp: For [Each]..Next; Do While/Do Until..Loop;…
Bài 7: Khai thác các đối tượng Application, Workbook(s), Worksheet(s), Range, Cells
Bài 8: Kỹ thuật bẫy và xử lý lỗi
Bài 9: Kỹ thuật tạo Userform và các điều khiển – Controls: ComboBox, ListBox, TextBox,...
Bài 10: Kỹ thuật tạo Menu bar, Ribbon
 
Lần chỉnh sửa cuối:
Vì điều kiện ở tỉnh nên không ra Thủ đô học được. Các A/C có lớp nào đào tạo trực tuyến hoặc qua TeamViewer không ạ?
Em cũng rất ham món này, cũng mua và sắm tài liệu tự học nhưng không đâu vào đâu cả do còn một số vấn đề chưa được sáng tỏ.
Em nghĩ tốt nhất có 1 thầy cầm tay chỉ việc và giải đáp một số nội dung em đang vướng.
 
Chào bạn,
Hiện nay trung tâm đang dạy trực tiếp chứ chưa có lớp học Online do khi học online thì sự tương tác giữa thầy và trò là không nhiều, cộng thêm những yếu tố kỹ thuật như đường truyền mang, máy móc thiết bị....
Chúng tôi sẽ xem xét đề cập của bạn, và nếu có lớp Online chúng tôi sẽ liên hệ với bạn lại nhé. Cám ơn bạn đã quan tâm đến lớp học. :)
 
Lớp học "VBA cơ bản" sẽ khai giảng ngày 22/01/2015. Hẹn gặp lại các bạn tại Trung tâm đào tạo thực hành Bluesofts :Phòng 1012, tầng 10 CT1A-DN2 Đường Hàm Nghi, KĐT Mỹ Đình 2, Từ Liêm, Hà Nội
 
Lớp học "Excel nâng cao" của thầy Nguyễn Duy Tuân rất hay và bổ ích, mọi người sẽ biết cách làm tăng tốc độ xử lý của bảng tính, giảm nhẹ file tài liệu và có những cách làm với phần mềm Add-in A-Tools rất độc đáo
 
Lớp học "Lập trình VBA cơ bản" của Thầy Nguyễn Duy Tuân là bước tiền đề để các bạn có thể tiến tới theo học lớp "Lập trình VBA Nâng cao".
Ngày 22/01/2015 lớp học sẽ chính thức khai giảng. Các bạn nhanh tay đăng ký nhé
 
Mở lớp học Lập trình VBA trong Excel CƠ BẢN - Hà Nội, khai giảng 24/02/2016

Bluesofts khai giảng lớp VBA cơ bản trong Excel tại Hà Nội vào 18h30 ngày 24/02/2016.

Thông tin khóa học VBA cơ bản tại đây
http://bluesofts.net/daotaothuchanh/daotaovbacoban.html
 
Lớp khai Xuân hả anh Tuân? :-=
 
Mình xin giới thiệu cho các bạn Nhóm hàm thời gian khi lập trình VBA trong Excel cơ bản.
Nhóm hàm thời gian
[GPECODE=vb]
Property Date As Variant
Function DateSerial(Year As Integer, Month As Integer, Day As Integer)
Function DateValue(Date As String)
Function Day(Date)
Function Month(Date)
Function Year(Date)
Function Weekday(Date, [FirstDayOfWeek As VbDayOfWeek = vbSunday])
Property Now As Variant
Property Time As Variant
Function Hour(Time)
Function Minute(Time)
Function Second(Time)
Function TimeSerial(Hour As Integer, Minute As Integer, Second As Integer)
Function TimeValue(Time As String)
[/GPECODE]
Các bạn tìm hiểu thêm nhiều nhóm hàm bổ ích tại khóa đào tạo của công ty. Đào tạo VBA trong Excel cơ bản
 
Mình xin giới thiệu một số hàm cơ bản trong nhóm hàm văn bản.
[GPECODE=vb]
Function Chr(CharCode As Long)
Function ChrW(CharCode As Long)
Function Asc(String As String) As Integer
Function AscW(String As String) As Integer
Function Format(Expression, _
[Format], _
[FirstDayOfWeek As VbDayOfWeek = vbSunday], _
[FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1])
Function InStr([Start], _
[String1], _
[String2], _
[Compare As VbCompareMethod = vbBinaryCompare])
Function InStrRev(StringCheck As String, _
StringMatch As String, _
[Start As Long = -1], _
[Compare As VbCompareMethod = vbBinaryCompare]) As Long
Function LCase(String)
Function Left(String, Length As Long)
Function Right(String, Length As Long)
[/GPECODE]
Các bạn tìm hiểu thêm nhiều nhóm hàm bổ ích tại khóa đào tạo của công ty. Đào tạo VBA trong Excel cơ bản
 
Lần chỉnh sửa cuối:
[h=2]UMU - Unicode Menu In Userform (OpenSource) [/h]
demo.jpg
UMU - Unicode Menu In Userform là bộ mã nguồn (OpenSource) tạo menu trên userform trong VBA (Excel, Word,,...) với chuẩn unicode. Bộ mã thiết kế một menu ngang chuẩn và mở, người dùng chỉ cần nhập nội dung menu vào sheet "data", khi chạy menu sẽ lấy dữ liệu từ đó để hiển thị. Menu cho phép hiển thị: Radio, Checkbook, Image (ảnh), Label, Label với tiêu đề và mô tả, hiển thị với kiểu chữ, màu sắc phong phú. Khi download về chạy chắc chắn bạn sẽ thực sự nhạc nhiên...
Các chương trình ứng dụng sử dụng mã nguồn của UMU cần phải tuân thủ những quy định trong file License gửi kèm!
Tác giả: Nguyễn Duy Tuân
DOWNLOAD version 1.2.2.0, updated: 26/10/2015
Để tìm hiểu về nội dung khóa học các bạn vào đây: http://www.bluesofts.net/daotaothuchanh/daotaovbacoban.html

Đăng ký học
 
Hàm Split
Cấu trúc:

Function Split(Expression As String, _
[Delimiter], _
[Limit As Long = -1], _
[Compare As VbCompareMethod = vbBinaryCompare])

Ví dụ: Dùng hàm VBA để giải quyết bài toán sau: Cho một chuỗi "Nguyen Duy Tuan; Hoang Phong; Dao Van Long" nằm trong ô A1, hãy tách họ tên chuỗi đó ra mỗi ô chứa 1 họ tên (họ tên ngăn cách nhau bằng dấu chấm phẩy). Ví dụ chuỗi đó sẽ được tách như vào các vùng A3:A5 hoặc B2:D2 theo chiều ngang hoặc chiều dọc như sau:

vba.jpg
Để giải quyết bài toán trên ta làm như sau:

Bước 1: Nhập dữ liệu vào ô A1 chuỗi "Nguyen Duy Tuan; Hoang Phong; Dao Van Long"

Bước 2: Trong File Excel vừa tạo, bạn vào môi trường lập trình trong Excel bằng cách vào Developer chọn tới Visual basic (phím tắt Alt+F11). Tại đây các bạn vào menu Insert -> module để tạo module.
Bước 3: Copy code sau vào module vừa tạo -> click vào nút Run (nhấn F5) để nhận kết quả.
[GPECODE=vb]
Sub TestSplit()
Dim s As String
Dim v As Variant
s = ActiveSheet.Range("A1").Value
v = Split(s, ";") ' – Tao mang 1 chieu
Range("B2:D2").Value = v
'Ðoi chieu cua mang
Range("A3:A5").Value = WorksheetFunction.Transpose(v)
End Sub [/GPECODE]
Sau khi chạy xong, các bạn vào môi trường Excel để xem kết quả.
Các bạn tải file đính kèm nhé.
Để tìm hiểu thêm nhiều hàm bổ sung, các bạn tham khảo tại khóa học của công ty: http://www.bluesofts.net/daotaothuchanh/daotaovbacoban.html
 

File đính kèm

Lần chỉnh sửa cuối:
MsgBox

Cấu trúc :
Function MsgBox(Prompt, _
[Buttons As VbMsgBoxStyle = vbOKOnly], _
[Title], _
[HelpFile], _
[Context]) As VbMsgBoxResult

Bài toán: Hiễn thị thông báo "Ban muon lay vo khong?", trong thông báo đó sẽ hiễn thị 2 nút bấm là "Yes" và "No". Khi bạn chọn "Yes" thì sẽ hiễn thị thông báo theo ý muốn, khi chọn "No" cũng sẽ hiễn thị một thông báo khác.

vba1.jpg

Khi chọn "Yes" sẽ hiễn thị màn hình:

vb3.jpg

Khi chọn "No" sẽ hiễn thị màn hình:

vb2.jpg

Ví dụ như thế, từ những thông báo đơn giản này, các bạn có thể mở rộng ra nhiều tình huống khác nhau.
Để thực hành và tìm hiểu về MsgBox, các bạn copy code dưới đây vào môi trường lập trình trong excel và chạy để nhận kết quả:
[GPECODE=vb]
Sub MsgBox1()
'MsgBox "Hoc VBA co ban", vbOKOnly, "Thong bao"
Dim x As VbMsgBoxResult
x = MsgBox("Ban muon lay vo khong?", vbYesNo + vbQuestion, "Thong bao")
If x = vbNo Then
MsgBox "Ban co van de gi a...", vbExclamation
Else
MsgBox "Ban rat tuyet voi!", vbExclamation
End If
End Sub
[/GPECODE]
Khi copy pate vào module rồi các bạn nhấn F5 để chạy và nhận kết quả.
Các bạn tải File đính kèm để thực hành nhé.
Để tìm hiểu thêm 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://bluesofts.net/daotaothuchanh/daotaovbacoban.html
 

File đính kèm

Lần chỉnh sửa cuối:
InputBox

Cấu trúc:
Function InputBox(Prompt, _
[Title], _
[Default], _
[XPos], _
[YPos], _
[HelpFile], _
[Context]) As String

Bài toán hiện thị mà hình nhập thông tin, nếu nhập đúng tên là "Bluesofts" thì sẽ hiễn thị thông báo nhập thành công, ngược lại nếu nhập sai tên "Bluesofts" thì cho phép nhập lại 1 lần, bài toán được mô tả như sau:
Màn hình nhập thông tin:

inputbox1.jpg
Nhập đúng "Bluesofts":
inputbox2.jpg

Nhập sai thì thông báo nhập lại:

inputbox3.jpg
Để thực hành và tìm hiểu về InputBox, các bạn copy code dưới đây vào môi trường lập trình trong excel và chạy để nhận kết quả:
[GPECODE=vb]Sub HoiVaNhap()
Dim s
s = InputBox("Nhap ten cong ty Bluesofts:")
If s = "Bluesofts" Then
MsgBox "Dang nhap thanh cong:"
Else
s = InputBox("Ban nhap sai ten "Bluesofts", moi ban nhap lai:")
End If
End Sub
[/GPECODE]
Khi copy pate vào module rồi các bạn nhấn F5 để chạy và nhận kết quả.
Các bạn tải File đính kèm để thực hành nhé.
Để tìm hiểu thêm 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://bluesofts.net/daotaothuchanh/daotaovbacoban.html

 

File đính kèm

Giải bài toán: Tình tiền hàng với điều kiện mã hàng là "B" thì thành tiền được giảm 10%.
Bước 1: Các bạn thiết kế 1 CSDL như sau:


Bước 2: Vào môi trường lập trình VBA của file đó, tạo mới một module và copy đoạn code dưới đây vào như sau:
[GPECODE=vb]
Sub ThanhTien()
Dim i As Long
For i = 3 To 6
Cells(i, 5).Value = Cells(i, 3).Value * Cells(i, 4).Value
If Cells(i, 2).Value = "B" Then[/COLOR]
Cells(i, 5).Value = Cells(i, 5).Value * (1 - 0.1)End If
Next i
[/GPECODE]


Bước 3: Các bạn vào menu Developer -> Insert -> Button rồi kéo thành một nút bấm trên Excel, các bạn sữa tên nút bằng cách chuột phải vào nút chon -> Edit text và sữa tên theo ý mình.


Bước 4: Chuột phải vào nút bấm, chọn Assign Macro

Bước 5: Vào đây các bạn chọn vào macro ThanhTien -> Chon Ok

Bước 6: Click chuột ra ngoài -> click chuột trái vào nút vừa tạo để nhận kết quả.


Để tìm hiểu thêm nhiều ví dụ bổ ích khác, các bạn tham khảo chương trình học tại đây: Link khóa học
Chúc các bạn thành công!
 
Lần chỉnh sửa cuối:
Nhóm hàm kitra thông tin
[GPECODE= vb]
Function IsArray(VarName) As Boolean
Function IsDate(Expression) As Boolean
Function IsEmpty(Expression) As Boolean
Function IsError(Expression) As Boolean
Function IsNull(Expression) As Boolean
Function IsNumeric(Expression) As Boolean
Function RGB(Red As Integer, Green As Integer, Blue As Integer) As Long
Function TypeName(VarName) As String
Function VarType(VarName) As VbVarType
Function IsObject(Expression) As Boolean
[/GPECODE]
Để tìm hiểu thêm nhiều nhóm hàm bổ ích, các bạn tham khảo tại khóa Đào tạo lập trình VBA trong Excel cơ bản.
Tham hiểu về nội dung khóa học tại đây: Link khóa học
 
Lần chỉnh sửa cuối:
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

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

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:
[TABLE="width: 951"]
[TR]
[TD="class: gutter"]
1
2
3
4
5
6
7​
[/TD]
[TD="class: code"]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

[/TD]
[/TR]
[/TABLE]





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

[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
 
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
Chào bạn,
Tiêu đề là "Lọc dữ liệu theo yêu cầu trong Excel", mà học viên học "Lập trình VBA trong Excel cơ bản" đang học buổi 3 họ đã có yêu cầu cụ thể như thế. Mục đích mình chia sẽ bài viết là để các bạn hiểu được, với những kiến thức VBA cơ bản trong khóa học giúp các bạn có thể giải quyết những bài toán thực tế trong công ty. Nhưng bài toán cơ bản mà có thể họ tự làm cả tháng trời vẫn chưa hoàn thành, nhưng khi học qua khóa học thì họ có thể hoàn thành sớm hơn thực tế rất nhiều lần.
Bạn nên đọc và hiểu kỹ vấn đề mình cần truyền đạt nhé.
Cảm ơn bạn!
 
Hàm đếm số ô trống trong một vùng bất kỳ

[FONT=&amp]Trong excel, để kiểm tra 1 ô trống ta có thể dùng hàm IS BLANK, để đếm 1 vùng có bao nhiêu ô trống có hàm COUNTBLANK, nhưng hàm đếm ô trống này sẽ đếm bao gồm cả những ô chỉ có 1 dấu nháy đơn. Khi dùng hàm ISBLANK để kiểm tra ô có giá trị là 1 giấu nháy đơn thì kết quả trả về là FALSE, chứng tỏ ô đấy không phải ô trống mà hàm COUNTBLANK lại đếm vào. Vậy hôm nay mình sẽ hướng dẫn các bạn viết 1 hàm đểm những giá trị là trống.
Giả sử ta có bài toán đơn giản như sau:
-> Đếm số ô trống trong 1 vùng dữ liệu bất kỳ.
Trong bài toán này, vùng dữ liệu bất kỳ là B4:E9, trong vùng dữ liệu có ô D7 chứa giá trị là dấu nháy đơn (không phải trống). Khi đó kết quả trả về phải là 11.
[/FONT]


[FONT=&amp]
demotrongdebai1.jpg



[/FONT]​
Để 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 đó:
[GPECODE=vb]Option Explicit
Function DemOTrong(rng As Range) As Long
Dim i As Long ' Dem so ô cua vung
Dim j As Long ' Dem so o có du lieu trong vung
' Dem so ô cua vung
i = rng.Cells.Count
' Dem so o có du lieu trong vung
j = WorksheetFunction.CountA(rng)
'Tong so o trông
DemOTrong = i - j
End Function
[/GPECODE]
[FONT=&amp]
demotrongcode.jpg



[/FONT]​
Bước 2: Tại ô B2, chúng ta sẽ dùng hàm COUNTBLANK để đếm những ô có giá trị trống (hàm Excel thuần túy) B2=COUNTBLANK(B4:E9).

[FONT=&amp]
demotrongcountblank1.jpg
[/FONT]​

Bước 3: Tiếp tục dùng hàm DemOTrong mà chúng ta đã viết để so sánh kết quả, B3=DemOTrong(B4:E9). Các bạn chú ý kỹ kết quả của 2 hàm là COUNTBLANK và DemOTrong mà chúng ta tự viết, có 2 kết quả khác nhau. Nguyên nhân là mình đã giải thích ở đầu bài viết, nhưng ở đây mình xin được giải thích lại như sau: Hàm COUNTBLANK
sẽ đếm tất cả giá trị kể cả giá trị nháy đơn trong ô, mà khi dùng hàm ISBLANK để kiểm tra ô có giá trị nháy đơn vẫn trả về là FALSE (không phải ô trống, các bạn có thể kiểm tra thực tế trên 1 file excl bất kỳ). Còn hàm DemOTrong chỉ đếm những giá trị là trống, không đếm những ô có dấu nháy đơn.

[FONT=&amp]
demotrongketqua1.jpg



[/FONT]​
Các bạn vào đây download file ví dụ: Download
Để 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.

 

Trong việc lập trình, có những bài toán đơn giản ta có thể viết hàm hay thủ tục một cách dễ dàng, nhưng có những bài toán phức tạp mà kết quả của một hàm chúng ta cần phải kiểm tra kỹ lưỡng tiến trình nhận kết quả của chúng, và đôi khi xảy ra lỗi chúng ta cũng cần phải tìm lỗi do đâu... Để tìm lỗi và kiểm soát tiến trình VBA chạy các lệnh chúng ta cần sử dụng kỹ thuật Debug trong VBA và Excel. Tổng thể các bước làm trong môi trường VBA như sau :
1. Đặt con trỏ tại dòng lệnh muốn chặn lại để kiểm tra
2. Vào menu Debug, chọn mục "Toggle Breakpoint - F9"
3. Chạy lệnh: hàm hoặc thủ tục
4. Sau khi thực hiện bước 3. dòng lệnh sẽ được dừng lại ở nơi đặt Breakpoint.
5. Kết hợp với các cửa sổ Locals Window, Immediate để kiểm tra giá trị trong các biến, thuộc tính và biểu thức.
Video cách làm:


[video=youtube;8y7n1-V1NKk]https://www.youtube.com/watch?v=8y7n1-V1NKk[/video]​
 
Xóa, chèn dòng tự động giữa hai sheet

[FONT=&amp]Giả sử có bài toán như sau: Trong Sheet 1 có một vùng dữ liệu, Sheet 2 cũng có một vùng dữ liệu tương ứng. Yêu cầu bài toán là khi xóa một dòng bất kỳ ở Sheet 1 thì Sheet2 tự động xóa dòng tại vị trí đó. Tương tự với việc chèn dòng, khi Sheet 1 chèn một dòng bất kỳ thì Sheet 2 cũng sẽ chèn một dòng tương ứng với vị trí dòng dòng ở Sheet 1.
Giả sử có một vùng dữ liệu ở sheet 1 như sau:

vbaxoachendongdebai11.jpg


Tương tự với Sheet2 ta cũng có vùng dữ liệu tương ứng.

vbaxoachendongdebai21.jpg


Để giải quyết bài toán trên, các bạn làm theo các bước sau:
Bước 1: Copy code dưới đây vào module (vào môi trường lập trình (ALT+F11) chọn Insert-> Module để tạo mới Module và pate code dưới đây vào trong Module)
[GPECODE=vb]
Option Explicit
Sub XoaChenDong()
Dim lRow As Long
Dim IQuestion As String
IQuestion = MsgBox("Ban muon INSERT hay DELETE dong, Yes/No (Insert/delete).", vbYesNoCancel, "Thông báo")
Sheets("Sheet1").Select
'Luu vi tri dong can xoa vao bien lRow
lRow = ActiveCell.Row
Rows(lRow & ":" & lRow).Select
IQuestion = UCase(IQuestion)
If IQuestion = vbYes Then
Selection.insert
Sheets("Sheet2").Select
Rows(lRow & ":" & lRow).Select
Selection.insert
GoTo exitsub
ElseIf IQuestion = vbNo Then
Selection.delete
Sheets("Sheet2").Select
Rows(lRow & ":" & lRow).Select
Selection.delete
GoTo exitsub
Else
GoTo exitsub
End If
exitsub:
Sheets("Sheet1").Select
End Sub
[/GPECODE]
vbaxoachendong12.jpg

Bước 2:
Các bạn vào mỗi trường bảng tính, Insert một nút bấm để gán macro. Vào menu Developer -> Insert -> Button.

vbaxoachendong21.jpg


Sau đó các bạn đặt chuột vào một vị trí, kéo mộ vùng vừa đủ cho nút bấm, rồi gán Macro vừa tạo (XoaChenDong) vào nút bấm.

vbaxoachendong3.jpg


Bước 3: Sau khi hoàn thành việc gán Macro, các bạn đặt chuột vào 1 ví trí thuộc dòng bất kỳ cần chèn thêm dòng ở (mình đặt vào ô A6) tại dòng có mã hàng là HH003. Sau đó các bạn click vào nút Run -> khi đó sẽ hiển thị thông báo: "Bạn muon INSERT/DELETE dòng (I/D)". Các bạn gõ "I" (không phân biệt chữ viết hoa hay viết thường), sau đó chọn vào OK để nhận kết quả.

vbaxoachendong42.jpg


Sau khi click vào OK, trước dòng thứ 6 chứa mã hàng mã hàng HH003 sẽ chèn thêm một dòng.

vbaxoachendong51.jpg


Tương tự trước dòng thứ 6 chứa mã hàng HH004 ở sheet 2 cũng được chèn thêm một dòng ( do bảng dữ liệu ở sheet1 bắt đầu từ dòng 4, ở sheet2 bắt đầu từ dòng 3 nên khi chèn/xóa sẽ bị lệch 1 dòng).

vbaxoachendong61.jpg


Bước 4: Tương tự với bước 3, để xóa một dòng bất kỳ, ta cũng đặt chuột vào dòng đó, sao đó click chuột trái vào nút Run, để xóa dòng, tại hộp thoại thông báo, các bạn gõ chữ "D" sau đó click vào OK để nhận kết quả.

vbaxoachendong72.jpg


Sau khi click vào OK, tại sheet 1 sẽ xóa đi dòng thứ 8, dòng chứa mã hàng HH004.

vbaxoachendong81.jpg


Tương tự ở Sheet2, dòng sẽ bị xóa đi là dòng thứ 8, dòng chứa mã hàng HH004.

vbaxoachendong91.jpg


Các bạn vào đây download file ví dụ: Download

Để tìm hiểu VBA trong Excel là gì, tại sao làm Excel cần học, các bạn tham khảo khóa đào tạo VBA trong Excel cơ bản tại Bluesofts.net.



[/FONT]
 
Trong khóa học, các bạn sẽ được tìm hiểu các cấu trúc lệnh rẽ nhánh:
Minh xin giới thiệu cấu trúc 1 và ví dụ kèm theo mà trong khóa học các bạn sẽ được học: IF..END IF
[gpecode=vb]
If condition Then
block1
End If
[/gpecode]
Ví dụ 1:
Hiển thị hộp thoại để nhập mật khẩu, giá trị nhập vào được lưu vào biến MatKhau. So sánh, nếu mật khẩu khác
“bluesofts” thì lưu và đóng tập tin đang chạy.



Các bạn copy code này theo các bước ở các bài trước mình có hướng dẫn chi tiết. Các bạn chỉ cần copy vào một module và nhấn F5 để chạy code , nhận kết quả:
Code:
[GPECODE=vb]
Sub MatKhau()
Dim MatKhau As String
MatKhau = InputBox("Hay nhap mat khau:", "Dang nhap")
If Not MatKhau = "bluesofts" Then
'Neu mat khau <> "bluesofts" thi luu va thoat
ThisWorkbook.Close True]
Exit Sub 'Thoat khoi thu tuc hoac ham
End If
'Lam tiep
End Sub[/GPECODE]
Để tìm hiểu thêm nhiều kiến thức bổ ích, các bạn tham khảo tại khóa học: http://bluesofts.net/daotaothuchanh/daotaovbacoban.html
 
Kiểm tra, phát hiện sai xót trường số trong Excel

[video=youtube;hUvcLVtS8Nw]https://www.youtube.com/watch?v=hUvcLVtS8Nw[/video]

Trong nhiều trường hợp khi thao tác trên bàn phím, vô tình người dùng nhập trường số thành trường text như thêm dấu nháy đơn đằng trước, trường ngày gõ sai định dạng. Ví dụ: Định dạng mặc định trong máy tính đang là mm/dd/yyyy, nhưng người dùng lại gõ 31/12/2016 thì sẽ là sai. Hậu quả để lại tính toán sai, số liệu sai và báo cáo sai nếu không phát hiện raNgoài ra, trường hợp khó phát hiện hơn là sử dụng hàm để lấy ra giá trị nhưng lại lấy ra là Text. Ví dụ: ô A1 là HH-0K1, ta sử dụng hàm Right tại ô B1 để lấy ra số 1. Hàm Right(A1,1)=1 nhưng số 1 ở đây lại là Text chứ không phải là sốCách xử lý:Cách 1: Dùng Conditional FormattingBôi đen vùng cần kiểm tra rồi chọn Conditional Formatting àNew Rule àUse a formula to determine which cells to format. Phần Format values where this formula is true gõ công thức =istext(…). Xem video thao tác hướng dẫn.Cách 2: Dùng VBAĐoạn Macro sau đây sẽ giúp bạn trỏ con chuột đến từng ô có định dạng đang là Text để bạn sửa đến khi hoàn thành
VBA_CO_BAN_NOT_IS_NUMBERIC.png

Đăng ký học VBA trong Excel để tối ưu và hỗ trợ đắc lực hơn cho công việc. Đăng ký
Tại Đây

 
Bài viết này mình sẽ hướng dẫn các bạn tạo code để lọc toàn bộ dữ liệu là phiếu nhập từ sheet dữ liệu sang sheet phiếu nhập chỉ bằng Click chuột.Giả sử ta có một bảng dữ liệu nguồn như hình dưới đây, trong bảng dữ liệu ở cột A là ký hiệu phiếu nhập (PN) và phiếu xuất (PX). Yêu cầu bài toán là lọc ra toàn bộ dữ liệu từ sheet "DATA" là phiếu nhập vào sheet "Phieu Nhap" (Trích tài liệu học lập trình VBA trong Excel cơ bản tại Bluesofts).

VBALocPhieuNhap1.jpg


Trong sheet "Phieu Nhap", thứ tự các cột giống với sheet data, mục đích chính là lọc toàn bộ dữ liệu với điều kiện "ký hiệu" là "PN" sang bên sheet "Phieu Nhap".

VBALocPhieuNhap2.jpg


Để giải bài toá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à nhập lại code dưới đây vào trong module đấy:

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, các bạn vào menu Developer -> Insert -> vào Button (tạo nút bấm). Sau đó ra ngoài bảng tính, các bạn giữ chuột trái và kéo một vùng vừa đủ cho nút bấm. Rồi sau đó bạn gán macro LocPhieuNhap vào nút bấm (chuột phải vào nút bấm, chọn vào Assige Macro), các bạn đổi tên nút bấm theo yêu cầu (RUN).

VBALocPhieuNhap6.jpg


Bước 3: Bạn click chuột ra ngoài nút bấm rồi lại click chuột trái lại lên nút bấm, sau đó các bạn mở Sheet PhieuNhap để xem kết quả.

VBALocPhieuNhap7.jpg


Các bạn vào đây tải file ví dụ: DOWNLOAD
Để tìm hiểu VBA trong Excel là gì, tại sao những người làm Excel cần học VBA, các bạn tìm hiểu tại khóa Đào tạo VBA trong Excel cơ bản tại Bluesofts.net.
 
Hướng dẫn tạo hàm tách Email trong chuỗi

Theo nhu cầu thực tế của các công ty, việc tìm kiếm và lập danh sách khách hàng là không thể thiếu. Trong danh sách khách hàng, quan trọng nhất là địa chỉ email của khách hàng. Việc tổng hợp email lại đang là vấn đề vất vả nhất, có nhiều người ngồi copy từng email trong một chuỗi bao gồm các thông tin khác của khách hàng. Việc làm này sẽ mất rất nhiều thời gian và công sức, làm giảm hiệu quả công việc. Vậy mình viết bài này nhằm hướng dẫn các bạn viết một hàm tách địa chỉ Email, khi có một danh sách khách hàng bao gồm email và thông tin khách hàng, các bạn chỉ việc gõ hàm =TachEmail(chuỗi) và nhấn Enter, rồi copy cho các ô còn lại, hàm sẽ tự động tách riêng danh sách Email cho các bạn.
Bước 1: Giả sử chúng ta có 1 danh sách khách hàng vào gồm Email, sdt, tên công ty,... ở cột A, mục đích của bài toán là tạo ra một hàm, khi chúng ta dùng hàm thì sẽ lọc ra danh sách Email ở cột bên cạnh. Các bạn thiết kế một mẫu dữ liệu tương tự như cơ sở dữ liệu trong dưới đây:

loc_email.jpg

Bước 2:
Sau khi thiết kế xong cơ sở dữ liệu, các bạn vào môi trường lập trình (Alt + F11 để vào môi trường lập trình), các bạn chọn tới menu Insert -> module để tạo mới một module. Sau đó các bạn copy code dưới đây vào trong module vừa tạo:

[GPECODE=vb]'...CODE....
Option Explicit
Function TachEmail(ByVal Chuoi As String) As Variant
Dim s As String, Email As String 'khao bao 2 chuoi s,email
Dim p1&, p2& ' khai bao 2 bien kieu long p1,p2
s = " " & Chuoi & " " 'gan s= chuoi, minh ghep them 2 dau cach de khi chuoi chi co email
Email = InStr(1, s, "@") ' tim vi tri cua "@" trong email
If Email > 0 Then ' xet dieu kien co ton tai email k?
p1 = InStr(Email, s, " ") 'tim vi tri cach trong lien truoc email
p2 = InStrRev(s, " ", Email) 'tim vi tri cach trong lien sau email
TachEmail = Mid(Chuoi, p2, p1 - p2) 'dung ham MID de lay ra email
Else
TachEmail = CVErr(xlErrNA) ' neu khong co email thi bao #N/A
End If
End Function
'... END CODE....[/GPECODE]

code_tach_email.jpg

Bước 3:
Sau khi hoàn thành việc copy code, các bạn vào môi trường bảng tính và tiến hành gõ hàm như sau:

chon_ham_email.jpg

Bước 4:
Các bạn đưa và đối số duy nhất của hàm là một chuỗi, các bạn gán như sau:

nhan_chuoi_email.jpg

Bước 5:
Khi nhận xong chuỗi, các bạn copy cho các dòng dữ liệu còn lại để nhận kết quả:

ket_qua_tach_email.jpg

Để tìm hiểu thêm kiến thức và có thể viết thêm nhiều hàm cần thiết, các bạn tìm hiểu thêm tại khóa đào tạo VBA trong excel cơ bản của công ty.
Link khóa học
Các bạn vào đây để tải file ví dụ:
Dowloand
 
Điền dữ liệu vào 2 cột tự động theo ý bằng VBA

Dim i As Long[FONT=&amp]Giải bài toán theo yêu cầu như sau:
Yêu cầu bài toán: Điền giá trị từ A1:A10 là 1:100, tương ứng mỗi giá trị tại cột A điền tiếp giá trị tại cột B từ B1:B100 nếu là:
- Dòng chẵn điền "Bluesofts.net"
- Dòng lẻ điền "Excelnangcao.com"
Để giải bài toán trên, các bạn làm theo các bước sau:

Bước 1: Các bạn tạo mới một module và copy code ở dưới đây vào.
[/FONT]
[GPECODE=vb]Sub VongLapFor()
Dim i As Long
For i = 1 To 100
Cells(i, 1).Value = i
If i Mod 2 = 1 Then
Cells(i, 2).Value = "Excelnangcao.com"
Else
Cells(i, 2).Value = "Bluesofts.net"
End If
Next i
End Sub[/GPECODE]
vbaVongLap1.jpg

Bước 2: Tại môi trường bảng tính, bạn tạo một nút bấm (hoặc Shap) để gán và chạy macro.

vbaVongLap0.jpg

Bước 3:
Click chuột trái vào nút bấm để chạy macro và nhận kết quả.

vbaVongLap2.jpg

Các bạn vào đây download file ví dụ: Download
Để tìm hiểu VBA trong Excel là gì, tại sao những người làm Excel cần học VBA, các bạn tìm hiểu tại khóa Đào tạo VBA trong Excel cơ bản tại Bluesofts.net.

 
Protect/UnProtect Sheet bằng câu lệnh VBA

Trong bài viết này mình sẽ hướng dẫn các bạn cách tạo thủ tục Protect/Unprotect Sheet để gán vào nút bấm trên bảng tính. Khi đó các bạn chỉ cần click chuột vào nút bấm, mà hình sẽ hiển thị thông báo "Ban muon Protect/Unprotect Sheet (YES/NO)", nếu các bạn chọn vào YES thì sẽ tự Protect Sheet, chọn No sẽ Unprotect Sheet. Để làm được như vậy, 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ác bạn tạo 1 module và copy code dưới đây vào trong module.
[GPECODE=vb]
Option Explicit
Sub Protect_UnProtectSheet()
Dim sh As Worksheet
Dim answer As Variant
Set sh = ThisWorkbook.Sheets("Sheet1")
answer = MsgBox("Ban muon Protect/Unprotect Sheet (YES/NO)", vbYesNo)
If answer = vbYes Then
sh.Protect 123 '123 la pass de protect
Else
sh.Unprotect 123
End If
End Sub[/GPECODE]

Bước 2:
Sau khi hoàn thành việc copy code vào trong module, các bạn trở về môi trường bảng tính, sau đó tạo một nút bấm rồi gán macro "Protect_UnProtectSheet" vào nút bấm.


protectsheet2.jpg


Bước 3:
Các bạn click chuột vào nút bấm sẽ hiển thị thông báo "Ban muon Protect/Unprotect Sheet (YES/NO)", nếu các bạn chọn vào YES thì Sheet1 sẽ tự Protect với mật khẩu là 123.


protectsheet3.jpg


Kết quả sau khi bạn chọn YES.


protectsheet4.jpg


Bước 4:
Để UnProtect Sheet các ban lại click chuột vào nút bấm sẽ hiển thị thông báo như ở bước 3, sau đó click vào NO thì sẽ tự động "Unprotect Sheet".


protectsheet5.jpg


Sau khi click vào NO sẽ có kết quả như sau:


protectsheet2.jpg


Các bạn vào đây tải file ví dụ: DOWNLOAD

Để tìm hiểu VBA trong Excel là gì, tại sao những người làm Excel cần học VBA, các bạn tìm hiểu tại khóa Đào tạo VBA trong Excel cơ bản tại Bluesofts.net.
 
Mình xin chia sẻ một phần mềm được thiết trên Excel và VBA, menu lệnh, userform, task pane, chữ chạy, treeview, listview unicode, ứng dụng chạy như phần mềm chuyên nghiệp của thầy Nguyễn Duy Tuân để các bạn tham khảo. (Mã nguồn của chương trình này được cấp cho các học viên học tại Bluesofts)
Các bạn đăng ký tham gia khóa học VBA trong Excel cơ bản tại đây:
Đăng ký học

[video=youtube;QLgponKYnLM]https://www.youtube.com/watch?v=QLgponKYnLM&amp;feature=youtu.be[/video]


 
Kiểm tra, phát hiện sai xót trường số trong Excel

[video=youtube;hUvcLVtS8Nw]https://www.youtube.com/watch?v=hUvcLVtS8Nw[/video]

Trong nhiều trường hợp khi thao tác trên bàn phím, vô tình người dùng nhập trường số thành trường text như thêm dấu nháy đơn đằng trước, trường ngày gõ sai định dạng.
Ví dụ: Định dạng mặc định trong máy tính đang là mm/dd/yyyy, nhưng người dùng lại gõ 31/12/2016 thì sẽ là sai. Hậu quả để lại tính toán sai, số liệu sai và báo cáo sai nếu không phát hiện ra.
Ngoài ra, trường hợp khó phát hiện hơn là sử dụng hàm để lấy ra giá trị nhưng lại lấy ra là Text.
Ví dụ: ô A1 là HH-0K1, ta sử dụng hàm Right tại ô B1 để lấy ra số 1. Hàm Right(A1,1)=1 nhưng số 1 ở đây lại là Text chứ không phải là số.
Cách xử lý:
Cách 1: Dùng Conditional Formatting
Bôi đen vùng cần kiểm tra rồi chọn Conditional Formatting sau đó vào phần Use a formula to determine which cells to format. Trong phần Format values where this formula is true gõ công thức =istext(…). Xem chi tiết ở video thao tác hướng dẫn trên.
Cách 2: Dùng VBA
Đoạn Macro sau đây sẽ giúp bạn trỏ con chuột đến từng ô có định dạng đang là Text để bạn sửa đến khi hoàn thành
VBA_CO_BAN_NOT_IS_NUMBERIC.png

Đăng ký học VBA trong Excel để tối ưu và hỗ trợ đắc lực hơn cho công việc. Đăng ký Tại Đây

 
Lọc ra danh sách tên sheet trong file vào một cột trong bảng tính

Trong thực tế, những người sử dụng Excel mà sử dụng nhiều sheet để nhập số liệu. Việc thống kê tất cả tên sheet bằng các hàm excel thông thường là một việc rất khó khăn. Vậy mình xin chia sẽ cho các bạn thủ tục hiển thị danh sách tên sheet trong một file bất kỳ vào một cột trong bảng tính một cách đơn giản nhất. Giả sử chúng ta có một file Excel gồm các sheet sau: Bluesofts.net1, Bluesofts.net2, Bluesofts.net3, Bluesofts.net4, Bluesofts.net5, Bluesofts.net6. Yêu cầu bài toán là lọc ra tên tất cả các sheet vào một cột bất kỳ trong 1 sheet.

vb0.jpg

Để giải bài toá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 (nhấn phím tắt Alt+F11) , rồi bạn vào menu Insert -> chọn vào module để insert module, sau khi tạo xong module, các bạn copy code dưới đây vào trong module:
[GPECODE=vb]Sub LayTenSheet() Dim Sh As Worksheet
Dim I As Long
'Duyet tung sheet trong sheets, ghi ten sheet ra cot A
For Each Sh In Application.ThisWorkbook.Sheets
I = I + 1
Cells(I, 1).Value = Sh.Name
Next
End Sub[/GPECODE]

vb%20code.jpg

Bước 2
: Các bạn vào môi trường bảng tính, vào Menu Developer --> chọn Insert --> Button (Form Control) (Trường hợp trên thanh Menu chưa có thẻ Developer thì thực hiện như sau: File --> Options --> Customize Ribbon rồi tích chọn vào ô Developer và nhấn OK)

vb1.jpg

Sau khi chọn vào Button, các bạn đặt chuột vào 1 ví trí mà bạn muốn tạo nút bấm, giữ chuột trái và kéo một vùng đủ rộng của nút bấm,rồi thả chuột sẽ hiện ra bảng Assign Macro. Chọn tên Macro "LayTenSheet" rồi click chuột trái vào OK.

vb5.jpg


Bước 3: Sau khi Assign xong Macro thì bạn click chuột phải vào nút bấm vừa tạo và sửa tên theo ý của bạn, sau khi sữa tên xong, các bạn click chuột ra bên ngoài bảng tính.

vb3.jpg

Bước 4
: Tiếp theo các bạn click chuột trái vào nút bấm để nhận kết quả.

vb4.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ó rất nhiều sheets, việc sử dụng công thức giữa các sheets hoặc nhớ các tên sheets gặp nhiều khó khăn, đồng thời file excel có thể chia sẻ cho nhiều người sử dụng. Do đó, chức năng này sẽ giúp người dùng kiểm soát và sử dụng file excel hiệu quả hơn.
- Ngoài ra, khi tạo ra file excel tự động bằng công thức hoặc bằng VBA thì người dùng sẽ thường ẩn sheets tự động để không tác động vào tên, cấu trúc các sheets trong file excel. Tính năng này sẽ trở nên hữu ích cho người dùng để tạo các thêm các công thức từ các sheets bị ẩn theo cấu trúc ten_sheet!.
Ví dụ: =Sum(Bluesofts.net2!$B$5:$B$200).
Link tải file:
Tải file
Để tham khảo thêm nhiều kiến thức về VBA cơ bản, các bạn tìm hiểu tại khóa đào tạo lập trình VBA cơ bản trong excel..
Link khóa học:
Đăng ký học
 
Tạo hàm tách dãy số đầu tiên trong chuỗi

Chào các bạn, hôm nay mình sẽ giới thiệu cho các bạn hàm tách dãy số đầu tiên hoặc dãy số đầu tiên có ký tự "-" liên kết với dãy số tiếp theo. Để có hàm tách dãy số như trên, các bạn tiến hành làm theo các bước sau:
Bước 1: Tạo cơ sở dữ liệu gồm ký tự và số.

ham_tch_so_1.jpg


Bước 2: Vào môi trường lập trình VBA, các bạn vào menu INSERT -> MODULE để tạo một module, sau đó copy code dưới đây vào trong module vừa tạo.
[GPECODE=vb]
'...CODE....
Function TACHDAYSO(ByVal CHUOI As String) As String
Dim I As Long
Dim CH As String
Dim BATDAT As Boolean
For I = 1 To Len(CHUOI)
CH = Mid(CHUOI, I, 1)
If IsNumeric(CH) Or CH = "-" Then
If Not BATDAT Then
BATDAT = True
End If
TACHDAYSO = TACHDAYSO & CH
Else
If BATDAT Then
Exit Function
End If
End If
Next I
End Function
'...END CODE...[/GPECODE]
Sau khi pate vào sẽ tương tự như hình dưới đây:

ham_tach_so_2.jpg

Bước 3: Sau khi hoàn thành việc copy code, các bạn vào môi trường bảng tính Excel, các bạn gõ hàm =TACHDAYSO( ô chứa chuỗi ký tự và số).

ham_tach_so_3.jpg

Bước 4: Tiếp theo các bạn nhấn ENTER rồi copy công thức cho các ô còn lại và nhận kết quả:

ham_tach_so_4.jpg

Để tìm hiểu thêm nhiều kiến thức bổ ích về VBA, các bạn tìm hiểu tại khóa đào tạo VBA trong Excel cơ bản của công ty.
Link khóa học: Đào tạo VBA trong Excel cơ bản
Các bạn tải File ví dụ tại đây: Dowloand
 
Phóng to và thu nhỏ Userform và Controls trong Excel VBA

Trong VBA. Tạo userform chúng ta muốn co giãn form và các controls bên trong tự phóng to lên hoặc thu nhỏ theo tỷ lệ form. Bình thường không làm được nhưng với phương pháp lập trình VBA, API và sử dụng thuộc tính Userform.Zoom chúng ta làm được việc này.

zoomform.gif

Cách làm rất đơn giản. Bạn hãy làm theo hướng dẫn sau:
1. Mở Userform, View Code
2. Dán đoạn code sau vào
[TABLE="class: cms_table"]
[TR]
[TD]'****************************************
'Tac gia: Nguyen Duy Tuan
'Tel : 0904.210.337
'E.Mail :
tuanktcdcn@yahoo.com
'Website: www.bluesofts.net
'****************************************
[GPECODE=vb]
Private Sub UserForm_Initialize()
AllowResize = True
OldWidth = Width
OldHeight = Height
If Val(Application.Version) < 9 Then
hwnd = FindWindow("ThunderXFrame", Caption) 'XL97
Else
hwnd = FindWindow("ThunderDFrame", Caption) 'XL2000
End If
PrevStyle = GetWindowLong(hwnd, GWL_STYLE)
SetWindowLong hwnd, GWL_STYLE, PrevStyle Or WS_SIZEBOX Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
Label3.ForeColor = vbBlue
Dim I&
For I = 1 To 12
ComboBox1.AddItem "Tháng " & I
ListBox1.AddItem "Tháng " & I
Next I
End Sub[/GPECODE]
'--------------------------------------------------------------------
[GPECODE=vb]
Private Sub UserForm_Resize()
Dim tmpZoom&, CurStyle&
Dim tmpWidth As Double
If Not AllowResize Then Exit Sub
CurStyle = GetWindowLong(hwnd, GWL_STYLE)
tmpZoom = Round(Width / OldWidth * 100, 0)
If tmpZoom < ZoomMin Then tmpZoom = ZoomMin
If tmpZoom > ZoomMax Then tmpZoom = ZoomMax
AllowResize = False 'Ngan khong chay UserForm_Resize khi dang thay doi size
If tmpZoom = ZoomMin Or tmpZoom = ZoomMax Then
'Neu khong phai la phong to man hinh thi co lai kich co
If Not (CurStyle And WS_MAXIMIZE) = WS_MAXIMIZE Then
Width = tmpZoom * OldWidth / 100
Height = Width * OldHeight / OldWidth
End If
End If
If (CurStyle And WS_MAXIMIZE) = WS_MAXIMIZE Then
tmpWidth = OldWidth * Height / OldHeight
tmpZoom = Round(tmpWidth / OldWidth * 100, 0) 'limitZoom
End If
'Change height by width
'If Not ((CurStyle And WS_MAXIMIZE) = WS_MAXIMIZE Or ' (CurStyle And WS_MINIMIZE) = WS_MINIMIZE) Then
' Height = Width * OldHeight / OldWidth
'End If
AllowResize = True 'Cho phep resize
Zoom = tmpZoom
End Sub[/GPECODE]
[/TD]
[/TR]
[/TABLE]

Download mã nguồn
 
Ghi thông tin theo ý lên thanh trạng thái trong Excel.
Các bạn vào môi trường lập trình INSERT một MODULE copy code dưới đấy vào module và chạy chương trình (nhấn F5 hoặc click vào RUN).
[GPECODE=vb]
Sub GhiTrangThai()
Application.StatusBar = "HOANG PHONG"
End Sub[/GPECODE]
1.jpg
Để tìm hiểu thêm nhiều kiến thức bổ ích tại khóa đào tạo "Lập trình VBA trong excel cơ bản" của Công ty Cổ phần Bluesofts tổ chức.
Xem đầy đủ thông tin khóa học tại đây.
 
Lập báo cáo động kết hợp VBA và A-Tools

Trong thực tế công việc văn phòng, các bạn nhân viên thường phải làm nhiều loại báo cáo đặc thù theo nhu cầu của doanh nghiệp. Ngoài việc dùng công thức Excel thuần túy, nhiều người đã tìm hiểu về VBA trong excel để thiết kế những báo cáo đơn giản, hiệu quả, giảm dung lượng file và tăng tốc độ xử lý công thức, dữ liệu trong file. Hôm nay mình sẽ hướng dẫn các bạn làm một báo cáo động có kết hợp VBA và một công cụ mới là A-Tools. Mục đích là tạo được báo cáo động, lọc theo một điều kiện "Mã hàng" nhưng sẽ "lọc theo một hoặc nhiều mã hàng" .Giả sử ta có bài toán như sau: Có một bảng dữ liệu gồm nhiều cột, trong đó có cột "Mã hàng". Vậy yêu cầu bài toán là: Tôi muốn xem báo cáo theo một mã hàng hoặc nhiều mã hàng, khi tôi chọn một mã hàng thì lọc toàn bộ dữ liệu của mã hàng đấy, khi chọn 2 thì lọc toàn bộ dữ liệu của 2 mã hàng,... tương tự cho n mã hàng.Để giải quyết bài toán trên chúng ta làm như sau:Bước 1: Thiết kế mẫu file Excel gồm 3 sheet như sau:Sheet Setup: để lưu các thiết lập chung, ở đây chỉ có 1 sheet báo cáo nên chỉ cần lưu bảng dữ liệu điệu kiện gồm tất cả mã và tên hàng. Tôi tên vùng dữ liệu là DMCT_DT chẳng hạn, các bạn có thể đặt tên theo cách hiểu hoặc cấu trúc dữ liệu của mình (note: tên tiếng việt viết liền không giống, ngăn cách nhau bởi dấu gạch dưới).

lku8vkz0o7auag7zg.jpg


SheetData: Là nơi lưu trữ cơ sở dữ liệu của các bạn, hiện tại mình đang thiết kế theo cấu trúc "Sheetdata" vừa là nơi nhập liệu, vừa lưu trữ dữ liệu. Sau này các bạn có thể tìm hiểu thêm về VBA thiết kế Form nhập liệu riêng, sau khi lưu sẽ vào "Sheetdata", ở đây vùng dữ liệu mình đặt ten là DATA.

k6wkbun5w67ectpzg.jpg


SheetReport: Là sheet để xem báo cáo, cấu trúc báo cáo thì mình thiết kế như hình dưới đây, gồm 1 Shap để chọn mã hàng, Shap này sẽ hiển thị Form chọn danh mục mã hàng theo ý. Các dòng tiêu đề mình thiết kế bằng tiếng việt, có dòng tổng cộng ở phía dưới, khi lập công thức chỉ việc lập từ dòng thứ 2.

mc9xm734mmcd2rzzg.jpg

Bước 2:
Tiến hành thiết kế Form trong VBA.Các bạn vào môi trường lập trình VBA (ALT+F11), vào menu Insert ->chọn UserForm, trong Form các bạn thiết kế theo cấu trúc tùy ý, còn trong bài toán của mình thì mình thiết kế hình dưới đây, ở đây mình dùng gồm "CheckBook" (để chọn tất cả), "ListBook" (để lấy danh sách) và các "Button" (để thực hiện lệnh).

dbv2ba3tbifsei6zg.jpg


Để nạp danh sách vào "Listbox", các bạn chọn vào "Listbox", ở bên trái phần "Propties", các bạn vào "Categorized", tại phần "RowSource", các bạn gõ tên bảng chứa mã và tên mà chúng ta đã đặt trong "SheetSetup". Ở đây các bạn chú ý trường "ColumnCount": số cột trong bảng mà các bạn cần hiển thị trên "ListBook", hiện tại mình để là 2 thì có cả mã và tên cùng hiển thị.

Sau khi thiết lập xong, các bạn double click vào Button "Chọn" rồi copy code dưới đây vào trong thủ tục bạn vừa tạo.
[GPECODE=vb]Dim s As String
If cbAll.Value = True Then
For i = 0 To lbDanhMuc.ListCount - 1
If s = "" Then
s = lbDanhMuc.List(i, 0)
Else
s = s & "','" & lbDanhMuc.List(i, 0)
End If
Next i
Else
For i = 0 To lbDanhMuc.ListCount - 1
If lbDanhMuc.Selected(i) = True Then
If s = "" Then
s = lbDanhMuc.List(i, 0)
Else
s = s & "','" & lbDanhMuc.List(i, 0)
End If
End If
Next i
End If
s = "'" & s & "'"
ThisWorkbook.Sheets("Report").Range("C1").Value = s
Unload Me [/GPECODE]
Các bạn chú ý dòng : ThisWorkbook.Sheets("Report").Range("C1").Value = s, chữ "Report" chính là tên sheet báo cáo mình đã thiết lập.

r8dwfg1a3q7id38zg.jpg
...
Các bạn xem đầ đủ nội dung bài viết tại đây:
Link bài viết
Các bạn tải file ví dụ về chạy thử tại đây: Link download file
Đây là một bài toán cơ bản có kết hợp VBA và công thức tạo báo cáo động bằng A-Tools, sau khi các bạn tìm hiểu kỹ về cách làm báo cáo động bằng A-Tools kết hợp kiến thức VBA cơ bản, các bạn có thể thiết kế các file Excel nhanh gọn, đơn giản, giống như các phần mềm chuyên nghiệp trên Excel.Ở đây mình cũng xin chia sẽ nội dung khóa đào tạo VBA cơ bản của công ty cho những bạn có nhu cầu, điều kiện tham gia khóa học, các bạn vào đây để xem:
Link khóa học
 
Tạo hàm tách họ tên trong Excel
Đôi khi chúng ta gặp những trường hợp cần tách họ tên của một danh sách nhận viên, học sinh, hay sinh viên chẳng han. Chúng ta phải kết hợp nhiều công thức trong Excel, bài này mình hướng dẫn cho các bạn một hàm trong Excel, mà chỉ cần copy về là sử dung được. Để copy hàm này các bạn làm như sau:
Bước 1: Nhấn tổ hợp phím ALT+F11 để vào môi trường VBA. Vào menu Insert->Module - Tạo module
Bước 2: Copy đoạn code dưới đây dán vào module
[GPECODE=vb]Function TachHoTen(ByVal sHoVaTen As String, Optional ByVal bLayHo As Boolean = True) As String
Dim p As Long
p = InStrRev(sHoVaTen, " ")
If bLayHo Then
TachHoTen = Left(sHoVaTen, p - 1)
Else
TachHoTen = Right(sHoVaTen, Len(sHoVaTen) - p)
End If
End Function
[/GPECODE]
Bước 3: ALT+F11 để trở về môi trường bảng tính của người dùng
Giả sử cần tách họ tên trong ô A1, công thức như sau:
B1=TachHoTen(A1,true)
- Nếu đối số thứ 2 là True thì kết quả trả về là Họ.
- Nếu đối số thứ 2 là False thì kết quả trả về là Tên.
Để trải nghiệm thêm nhiều kiến thức về VBA và phương pháp lập trình , mình xin giới thiệu tới các bạn khóa đào tạo lập trình VBA cơ bảntrong Excel tại công ty cổ phần Bluesofts, khóa học sẽ mang lại cho bạn nhiều kiến thức bổ ích, đáp ứng nhu cầu công việc của mình.
Để tìm hiểu về nội dung, chương trình khóa học, các bạn truy cập link sau : Link khóa học
 
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 đủ thông tin khóa đào tạo VBA trong excel cơ bản tại đây
Các bạn vào đây tải file ví dụ:
DOWNLOAD



 
BQT nên để các dạng mục, bài viết thế này vào một mục riêng lẫn lộn lộn xộn vào mục bài mới thế này (?)
 
Hiển thị MsgBox chữ có dấu tiếng việt - Unicode


Trong lập trình VBA, để hiển thị thông báo ta dùng hàm MsgBox, tuy nhiên hàm này không thể hiển thị chữ tiếng Việt có dấu -unicode. Bài viết này tôi xin hướng dẫn cách tạo ra một hàm MsgBox có khả năng hiển thị chữ tiếng Việt có dấu, unicode.

image001.jpg



Trong môi trường VBA, tạo một module mới, copy đoạn code dưới đây:

[gpecode=vb]
'Khai bao cac ham API trong thu vien User32.DLL. Chạy trong môi trường Office 32 hoặc 64-bit
#If VBA7 Then
Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As LongPtr, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
#Else
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
#End If[/gpecode]
[gpecode=vb]Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
'Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant, Optional HelpFile, Optional Context) As VbMsgBoxResult
'BStrMsg,BStrTitle : La chuoi Unicode
Dim BStrMsg, BStrTitle
'Hàm StrConv Chuyen chuoi ve ma Unicode
BStrMsg = StrConv(PromptUni, vbUnicode)
BStrTitle = StrConv(TitleUni, vbUnicode)
MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function[/gpecode]

[TABLE="class: cms_table_redactor_format_table"]
[TR]
[TD]'****************************************
'Tac gia: Nguyen Duy Tuan
'Tel : 0904.210.337
'E.Mail :
tuanktcdcn@yahoo.com
'Website: www.bluesofts.net
'****************************************
[TABLE="width: 1444"]
[TR]
[TD="class: gutter"]

[/TD]
[TD="class: code"][/TD]
[/TR]
[/TABLE]
[/TD]
[/TR]
[/TABLE]

XEM CHI TIẾT TẠI ĐÂY

Để tìm hiểu thêm nhiều kiến thức bổ ích và tự mình xây dựng nhiều nhóm hàm công thức phức tạp các bạn hãy tham gia khóa học Đào tạo VBA trong Excel cơ bản và trải nghiệm nhé.
 
Mình xin chia sẻ cho các bạn video giới thiệu một phần mềm nhỏ về quản lý chất lượng công trình của một học viên sau khi học xong khóa học Lập trình VBA trong Excel cơ bản của công ty cổ phần Bluesofts để các bạn tham khảo.

[video=youtube;fNKCSQbiZuc]https://www.youtube.com/watch?v=fNKCSQbiZuc[/video]​

Để tìm hiểu thêm nhiều kiến thức về VBA, các bạn tham khảo tại khóa đào tạo Lập trình VBA trong excel cơ bản của công ty.
Xem đầy đủ thông tin khóa học
tại đây
 
Lập trình VBA trong Excel kết nối CSDL trong mạng LAN, Internet - A-Tools

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 trình 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.


Để học hỏi thêm nhiều kiến thức bổ ích trong VBA mời các bạn tham khảo thêm khóa học Lập Trình VBA trong Excel Cơ Bản nhé.
Đăng ký học: http://bluesofts.net/daotaothuchanh/daotaovbacoban.html
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom