Miễn 100% phí hồ sơ du học Nhật + Tặng 5~9 triệu/bạn

Thursday, January 4, 2018

Học lập trình VBA trong Excel và Office

Tôi có biết gì về VBA (Visual Basic for Applications) không? Không.
Tôi có lập trình được VBA không? Có. Vì có thể tra trên mạng và tự học. Nếu tư tuy tốt về lập trình thì bạn có thể lập trình bất kỳ thứ gì với bất kỳ ngôn ngữ nào. Tôi cũng tạo khá nhiều tool để phục vụ công việc.

Chứng chỉ chuyên gia Microsoft Office

Excel và Office là công cụ hoàn hảo cho công việc văn phòng

Và bạn nên học lập trình VBA cho Excel và Office. Khi học lập trình thì chúng ta quan tâm là có thể làm được gì với ngôn ngữ đó. Lập trình VBA giúp bạn xử lý nhiều thứ như ký tự, số liệu, văn bản vv. Ví dụ khi bạn cần thay một cụm từ trong hàng trăm file Word cùng lúc chẳng hạn.

VBA không hỗ trợ ký tự tiếng Việt nhưng bạn có thể chuyển đổi từ mã Unicode bằng hàm ChrW, ví dụ:
à = ChrW(107)
Ví dụ = "V" & ChrW(237) & " d" & ChrW(7909)
Dấu nháy kép = Chr(34)

Lưu ý là trong sheet của Excel thì dấu nháy kép là hàm CHAR(34) nhé. Giữa VBA và Excel hơi khác nhau tên hàm số.

Nếu bạn đi du học ví dụ khóa học IT tại Nhật, bạn nên lấy chứng chỉ MOS = Microsoft Office Specialist (chuyên gia MS Office). Thường thì chương trình học sẽ hỗ trợ bạn lấy được chứng chỉ này.

Nếu học tốt về Office là bạn có thể làm hầu hết công việc văn phòng với hiệu quả rất cao và có thể sống phấn khích mỗi ngày.

Đây là tutorial để học VBA:
http://www.excel-easy.com/vba.html

Mở VBA trong Excel

Ấn Alt + F11 hay trên máy xách tay là Alt + Fn + F11. Để nhập hàm thì chọn Insert >> Standard Module...

Hàm số sẽ định nghĩa bằng Function hoặc Sub, khác nhau là Function cho ra kết quả vào một ô, còn Sub là chỉ chạy thôi.
Ví dụ Function myResult khi viết xong ở một ô bạn có thể nhập "=myResult(B2)" chẳng hạn.
Hàm myResult sẽ lấy trị số ở ô B2 làm tham số và trả lại kết quả vào ô mà bạn nhập.

Cách DEBUG (sửa lỗi) VBA

Tương tự như hàm Alert trong JavaScript, chúng ta sẽ dùng hàm MsgBox:
MsgBox "Debug is most important in programming"
MsgBox "Entered value is " & Range("A1").Value

Tất nhiên trong VBA bạn không thể viết MsgBox "Tôi sửa lỗi" được, vì nó sẽ hiện ra cửa sổ thông báo là "T?i s?a l?i" vì VBA không hỗ trợ ký tự tiếng Việt.

Muốn hiện ra đúng thì phải dùng chuyển đổi từ mã Unicode của ký tự tương ứng:
MsgBox "T" & ChrW(244) & "i S" & ChrW(7917) & "a L" & ChrW(7895) & "i"

Còn đây là hàm tôi viết để thay dấu nháy kép trong một ô Excel bất kỳ bằng CHAR(34) (mã ký tự dấu nháy kép). Vì sao phải làm thế? Vì trong Excel muốn in ra dấu nháy kép trong công thức, bạn phải dùng CHAR(34), nếu không Excel sẽ hiểu dấu nháy kép là bắt đầu của chuỗi văn bản.

Ví dụ ="Hello "&A1 sẽ cho ra Hello [nội dung ô A1]. Bạn không thể gõ dấu nháy kép được. Giả sử ô A1 là Mark thì kết quả trong ô nhập công thức là: Hello Mark.
Muốn nhập thành Hello "Mark"?

Đây là công thức: = "Hello "&CHAR(34)&A1&CHAR(34).

Hàm số VBA trong Excel chuyển đổi dấu nháy kép:
Function HtmlString(Text As String) As String
  Dim CharCode, CharString, i As Long
  HtmlString = Text
  CharCode = Array(ChrW(34))
  CharString = Array(Chr(34)&"&CHAR(34)&"&Chr(34))
  For i = 0 To UBound(CharCode)
    HtmlString = Replace(HtmlString, CharCode(i), CharString(i))
  Next i
  HtmlString = Chr(34) & HtmlString & Chr(34)
End Function
Have fun!
Mark

No comments:

Post a Comment