1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình visual basic

175 413 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 175
Dung lượng 2,28 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

tên_biến có thể chứa dữ liệu số bất kỳ hay dữ liệu chuỗi có thể chuyển đổi thành số, trong khoảng 0 đến 255.. Hàm này chấp nhận dữ liệu số hay chuỗi có thể chuyển thành số, trong giới hạ

Trang 2

Thông tin giảng viên

•• LƯƠNG TRẦN HY HIẾNLƯƠNG TRẦN HY HIẾN

Trang 3

Thông tin môn học

• VBA for WORD

• VBA for EXCEL

• VBA for PowerPoint

• VBA for Access

• VBA for Outlook

Trang 4

Mục tiêu

• Nhằm cung cấp cho sinh viên các kiến thức liên quan đến lập trình Visual Basic trong bộ

MS Office

• Cung cấp các kiến thức về ngôn ngữ VBA

• Viết các Macro từ đơn giản đến phức tạp

• Viết các Macro từ đơn giản đến phức tạp

Trang 5

Đề cương môn học: VBA

• Chương 1: Giới thiệu tổng quan VBA

• Chương 5: VBA for Outlook

• Chương 5: VBA for Outlook

• Chương 6: Bài tập

Trang 6

Đánh giá kết quả học tập

• Làm bài tập: Thang điểm 10

• Bài tập không nộp đúng hạn, bài làm giốngnhau 0 điểm

• Nhóm sinh viên(3-5 SV) chọn số đề tài saocho tổng điểm là 10, một bài không quá 4

cho tổng điểm là 10, một bài không quá 4nhóm chọn

• Nộp qua email: hyhien@gmail.com trướcngày 55//99//20102010

• Tiêu đề thư: VBA_DongNai_STTNhom

Trang 7

Tài liệu tham khảo

• Slide bài giảng của giảng viên

• Ebook cung cấp:

–– Absolute.Beginners.Guide.to.VBA Absolute.Beginners.Guide.to.VBA chm

–– Excel VBA Macro Programming Excel VBA Macro Programming.chm

–– Writing Excel Macros With VBA 2nd Ed Writing Excel Macros With VBA 2nd Ed.pdf

–– Access VBA Programming Access VBA Programming chm

• Tham khảo tài liệu trên Internet

• Các ví dụ mẫu

Trang 8

Tài liệu tham khảo - URL

Trang 9

Câu hỏi và thảo luận

Trang 11

Chương 1: Giới thiệu tổng quan

• Là bộ phần mềm lập trình dành riêngcho MS Office và tích hợp sẵn trong MSOffice

• Với VBA, các thao tác thực hiện mộtcách tự động theo ý muốn người sử

cách tự động theo ý muốn người sửdụng

• Các cú pháp tương đương Visual Basic6.0 + Thêm 1 số cái khác

• Không phân biệt hoa/thường

Trang 12

Để VBA (Macro) hoạt động

• WORD, EXCEL, PowerPoint, Outlook,

Access 2003: Tool/Macro/Security

Trang 13

Để VBA (Macro) hoạt động

• Security Level: Chọn Medium hay Low

•Medium: H ỏ i

•Low: Luôn ch ạ y

Trang 14

Để VBA (Macro) hoạt động

• WORD, EXCEL, PowerPoint, Outlook, Access 2007: Show Developer tab in Ribbon

Trang 15

Sử dụng VBA

• Mở cửa sổ soạn thảo: Alt + F11

Trang 16

Sử dụng Macro – Thu Macro tự động

• Tools / Macro / Record New Macro

Trang 17

Sử dụng Macro – Thu Macro tự động

Trang 18

Sử dụng VBA

• Alt + F8: Tạo/Chạy/Sửa/Xóa Macro

Trang 19

Sử dụng Macro – Thực thi

• Alt + F8

• Chọn Macro  Run

Trang 20

Sử dụng Macro – Thực thi

• Alt + F8

• Chọn Macro  Edit

Trang 21

Demo 01 VBA Example

Trang 22

Hiển thị câu thông báo

MsgBox “Chuỗi thông báo”, biểu tượng + nút nhấn,

Trang 23

Các loại biểu tượng

Trang 24

Các loại nút nhấn

Trang 25

– prompt : Giá trị mà bạn muốn hiển thị trong InputBox

– Title : Tiêu đề của InputBox

– Default : Giá trị mặc định khi InputBox xuất hiện

– Default : Giá trị mặc định khi InputBox xuất hiện

– xpos , ypos : Vị trí xuất hiện của InputBox

– Helpfile : Đường dẫn file help

– Context : Ngữ cảnh của file help

• VD:

bien = InputBox("Nhap vao ngay sinh cua ban",

"nhap lieu", "01/01/1981", 0, 0)

Trang 26

Các kiểu dữ liệu VBA

• Boolean: mang giá trị True/False

• Byte: Số nguyên nhỏ [0 – 255]

• Currency: Giá trị tiền tệ

• Date: Dùng để biểu diễn ngày, giờ

• Date: Dùng để biểu diễn ngày, giờ

• Double: Số thực dấu chấm động

• Integer: Số nguyên có dấu

• Long: Số nguyên lớn có dấu

• Object: Chứa tham chiếu đến đối tượng

Trang 27

Các kiểu dữ liệu VBA

Trang 28

Khai báo biến, hằng

Khai báo biến:

• Public/Dim/Private <tên biến> [as

Trang 29

Khai báo biến, hằng

• Quy tắc đặt tên biến:

– Bắt đầu với ký tự chữ

– Không vượt quá 255 ký tự

– Không trùng từ khóa VBA

– Không chứa khoảng trắng , , ! , # , $ , % , & , – Không chứa khoảng trắng , , ! , # , $ , % , & ,

@

Trang 30

Khai báo tường minh trong VBA

Trang 31

• Khai báo biến trong phần

Byte Số nguyên 0-255 Integer Số nguyên Long Số nguyên dài Single Số thực

• Khai báo biến trong phần

viết lệnh xử lý sự kiện cho

đối tượng.

– Chỉ cĩ phạm vi giữa hai

dịng Sub và End Sub

Double Số thực Boolean -1/0 - True/False

String Chuỗi

Trang 32

Khai báo biến, hằng

Trang 33

Các hàm chuyển đổi kiểu…

• Trong lập trình, cần chuyển đổi qua lại giữa các kiểu dữ liệu

• Các hàm chuyển đổi kiểu là một phần không thể thiếu của các ngôn ngữ lập trình

trình

• VBA cung cấp các hàm chuyển đổi kiểu khá tiện

Trang 34

CBool Chuyển 0 thành false, các trị khác thành true

CByte

Chuyển đổi tên_biến thành kiểu Byte tên_biến có thể chứa dữ liệu số bất kỳ hay

dữ liệu chuỗi có thể chuyển đổi thành số, trong khoảng 0 đến 255 Nếu tên_biến ngoài khoảng đó, VBA báo lổi Overflow Nếu tên_biến là dấu chấm động, nó được

làm tròn thành số nguyên gần nhất trước khi chuyển đổi kiểu.

CDec

Chuyển đổi tên_biến thành kiểu phụ Decimal Hàm này chấp nhận dữ liệu số hay

chuỗi có thể chuyển thành số, trong giới hạn của kiểu Decimal Đây là hàm cung cấp phương thức duy nhất để tạo kiểu phụ Decimal.

Chuyển đổi tên_biến thành kiểu Date CDate chấp nhận số và chuỗi biểu diễn ngày

CDate

Chuyển đổi tên_biến thành kiểu Date CDate chấp nhận số và chuỗi biểu diễn ngày

và chuyển đổi thành dạng được mô tả bởi thông tin địa phương trên máy tính Thí dụ máy tính được cài đặt dạng ngày của Mỹ mm/dd/yy, nếu ta nhập ngày dạng Anh dd/mm/yy và dùng hàm Cdate thì ngày được sẽ chuyễn đổi sang dạng Mỹ.

CCur

Chuyển đổi tên_biến thành kiểu Currency CCur chấp nhận dữ liệu số hay chuỗi bất

kỳ biểu diễn giá trị tiền tệ Hàm này nhận dạng thập phân hay dấu phân cách hàng ngàn theo thông tin địa phương của máy tính Chỉ dùng cho VBA.

Trang 35

Chuyển đổi tên_biến thành kiểu double Chấp nhận dữ liệu

số bất kỳ nằm trong giới hạn của kiểu Double hoặc bất kỳ dữ liệu chuỗi có thể chuyển đổi thành số trong giới hạn của kiểu Double.

CInt Chuyển đổi tên_biến thành kiểu Integer.

CLng Chuyển đổi tên_biến thành kiểu Long.

CSng Chuyển đổi tên_biến thành kiểu Single.

CSng Chuyển đổi tên_biến thành kiểu Single.

CStr Chuyển đổi tên_biến thành kiểu String CStr chấp

nhận kiểu dữ liệu bất kỳ.

CVar Chuyển đổi tên_biến thành kiểu Variant CVar chấp

nhận kiểu dữ liệu bất kỳ.

Trang 36

Hàm chuyển đổi chuỗi thành số…:Val

• Val là một hàm chuyển đổi kiểu “dễ

Trang 40

Các hàm toán học của VBA

Abs (num) Giá trị tuyệt đối của num

Atn (num) Arctangent của num

Cos (num) Cosi của num

Int (num) Phần nguyên của num

Exp (num) e num

Log (num) Lg(num)

Log (num) Lg(num)

Rnd (num) Số ngẫu nhiên trong 0 < x < 1

Sgn (num) Dấu của num

Sin (num) Sin của nu

Sqr (num) Bình phương của num

Tan (num) Tangent của num

Trang 41

Các hàm chuỗi của VBA

Asc (str) Lấy mã ASCII của str

Chr (numchar) Lấy ký tự (dạng Variant) ứng với mã ASCII là nmchar

Chr$( numchar) Lấy ký tự (dạng String) ứng với mã ASCII là nmchar

CStr (exp) Chuyển biểu thức sang dạng chuỗi

InStr (start, s1, s2) Lấy vị trí kí tự đầu tiên của s2 trong s1 bắt đầu ở start

InStr (start, s1, s2) Lấy vị trí kí tự đầu tiên của s2 trong s1 bắt đầu ở start

LCase (str) Chuyển sang chữ thường, dạng variant

LCase$( str) Chuyển sang chữ thường, dạng string

Left (str, len) Lấy len kí tự tính từ bên trái, dạng variant

Left$( str, len) Lấy len kí tự tính từ bên trái, dạng string

Trang 42

Các hàm chuỗi của VBA

Len (str) Số lượng ký tự trong str

LTrim (str) Cắt các khoảng trắng đầu str, dạng variant

LTrim$( str) Cắt các khoảng trắng đầu str, dạng string

Mid (str, start, len) Lấy len kí tự bắt đầu từ start trong str, dạng variant

Mid$( str,start,len) Lấy len kí tự bắt đầu từ start trong str, dạng string

Mid$( str,start,len) Lấy len kí tự bắt đầu từ start trong str, dạng string

Right (str, len) Lấy len kí tự tính từ bên phải, dạng variant

Right$( str, len) Lấy len kí tự tính từ bên phải, dạng string

RTrim (str) Bỏ các khoảng trắng bên phải, dạng variant

Rtrim$( str) Bỏ các khoảng trắng bên phải, dạng string

Trang 43

Các hàm chuỗi của VBA

Trim (str) Bỏ tất cả các khoảng trắng dư, dạng variant

Trim$( str) Bỏ tất cả các khoảng trắng dư, dạng string

Str (num) Đổi num chữ chuỗi dạng variant

Str (num) Đổi num chữ chuỗi dạng variant

Str$( num) Đổi num chữ chuỗi dạng string

UCase (str) Đổi sang chữ hoa, dạng variant

UCase$( str) Đổi sang chữ hoa, dạng string

Xem thêm các hàm trong VBLib (tên, ví d (tên, ví dụ ụ) )

Trang 44

Các cấu trúc điều khiển

Trang 45

Các cấu trúc điều khiển

Trang 46

Dim i, n as integer

Dim S as long

‘Nhập số nguyên dương n

S = 0 WHILE i<=n

S = S + i

i = i + 1 WEND

‘Xuat tong cua n so nguyen duong dau tien: S

End Sub

Trang 47

Cấu trúc lặp

• Cấu trúc DO WHILE … LOOP

DO WHILE <Biểu thức điều kiện>

‘Các câu lệnh muốn thực thi khi BTDK còn đúng

Trang 48

Cấu trúc lặp

• Cấu trúc DO … LOOP WHILE

DO

‘Thực hiện lệnh LOOP WHILE <biểu thức điều kiện>

Trang 49

Cấu trúc lặp

• Cấu trúc DO … LOOP UNTIL

DO

‘Thực hiện lệnh LOOP UNTIL <biểu thức điều kiện>

Trang 51

Sub ConvertToProper()’Excel VBA

Sub ConvertToProper()’Excel VBA

Dim cellObject As Range

For Each cellObject In Selection

cellObject.Formula = WorksheetFunction(Proper(cellObject.Formula))

Next

Trang 54

Xác định cận của mảng

• Các hàm Ubound và LBound có thể tìm cận trên và dưới của một mảng

• Cú pháp:

x = UBound (tên_mảng) ‘Cận trên của mảng

y = LBound (tên_mảng) ‘Cận dưới của mảng

y = LBound (tên_mảng) ‘Cận dưới của mảng

• Ta có thể định nghĩa cận của mảng:

Dim myInt( 1 to 10 ) as Integer

Trang 55

Mảng nhiều chiều

• Dim tên_mảng(cận trên 1, cận trên 2, ) As <kiểu>

• Ví dụ:

Dim arr1( 2,4 ) as Single

Dim arr2( 0 to 1 , 1 to 4 ) as Single

Dim arr2( 0 to 1 , 1 to 4 ) as Single

Trang 56

Làm việc với các đối tượng

• Tham chiếu đến thuộc tính:

• Xác lập giá trị cho 1 thuộc tính:

Object.PropertyName = Value

VD: ActiveCell.Font.Size = 16

• Làm việc với các phương thức:

Object.MethodName

Trang 57

Làm quen với các đối tượng

• Có thể gán đối tượng cho 01 biến:

Dim sht As Worksheet

Set sht = Workbooks (“Demo.xls") Worksheets (“Demo01")

• Một đối tượng có nhiều thuộc tính, ta có thể

sử dụng cấu trúc WITH như sau:

WITH đối tượng

WITH đối tượng

.Thuộc tính 1 Thuộc tính 2

Trang 58

Đối tượng Application

Trang 59

Đối tượng Application

Trang 60

Đối tượng Window

Trang 61

Làm quen UserForm

• Chuột phải Project (tên_file)Insert UserForm

Trang 62

Làm quen UserForm

• Giao diện Form:

• Thanh ToolBox:

Trang 63

Làm quen User Form

• Nên đặt lại tên cho các đối tượng

Trang 64

Làm quen Module

• Chuột phải Project (tên_file)Insert Module

Trang 65

Làm quen với Module

• Viết code: Hàm (Sub)

Trang 67

Làm việc với Document

Documents.Open(FileName)

VD: Documents.Open “D:\bangdiem.doc”

Trang 68

Làm việc với Document

• Lưu: Tài_liệu.Save

• Lưu lại với tên khác:

Tài_liệu.Save As (tên, loại)

• Đóng: Tài_liệu.Close chế_độ

• Đóng: Tài_liệu.Close chế_độ

– wdSaveChanges: Lưu tất cả thay đổi

– wdDoNotSaveChanges: Không lưu

– wdPromptToSaveChanges: Hỏi???

Trang 69

Làm việc với Document

Trang 70

Làm việc với Document

• Tài_liệu.Active: Kích hoạt document được chỉ định

• Tài_liệu.PrintOut: In tài liệu được chỉ định

• Tài_liệu.Select

• Tài_liệu.Undo (times)

• Tài_liệu.Redo (times)

Trang 71

Làm việc với Range (vùng chọn)

• Khai báo vùng chọn:

Tài_liệu Range (Start,End)

• Ví dụ: ‘Làm nghiêng đoạn 1

ActiveDocument Paragraphs(1) Range.Italic = True

• Thuộc tính của Range:

– Bold, Italic, Font

– Bold, Italic, Font

– Copy, Cut, Paste, Delete

– InsertAfter (text)

– InsertBefore (text)

– InsertParagraph

– InsertParagraphAfter

Trang 72

Range – Vùng chọn

InsertAfter (Text) Chèn text vào cuối vùng chọn

InsertBefore (Text) Chèn text vào đầu vùng chọn

InsertBreak (Type) Chèn/ Thay thế vùng chọn thành break

Trang 73

Range – Vùng chọn

InsertParagraphBefore Chèn paragraph vào đầu vùng chọn

StartOf (Unit, Extend) Mở rộng đầu vùng chọn đến đầu unit

MoveLeft (Unit, Count, Extend) Mở rộng vùng chọn/range sang trái

Count > 0, Extend = wdExtend

MoveRight (Unit, Count, Extend) Mở rộng vùng chọn/range sang phải

Count > 0, Extend = wdExtend

MoveUp (Unit, Count, Extend) Mở rộng vùng chọn/range lên trên

Count > 0, Extend = wdExtend

Trang 74

Range – Vùng chọn

HomeKey (Unit, Extend) Mở rộng vùng chọn về đầu Unit

Extend = wdExtend

MoveStart (Unit, Count) Thu hẹp/Mở rộng vùng chọn

Count > 0 hay Count < 0

EndKey (Unit, Extend) Mở rộng vùng chọn về cuối Unit

Extend = wdExtend Extend = wdExtend

MoveEnd (Unit, Count) Thu hẹp/Mở rộng vùng chọn

Count > 0 hay Count < 0

MoveStartUntil (Cset, Count) Thu hẹp/Mở rộng vùng chọn đến khi gặp Cset

Count > 0 hay wdFordward, wdBackward

MoveEndUntil (Cset, Count) Thu hẹp/Mở rộng vùng chọn đến khi gặp Cset

Trang 75

Range – Vùng chọn

MoveStartWhile (Cset, Count) Thu hẹp/Mở rộng vùng chọn chừng nào còn gặp

Cset

Count > 0 hay wdFordward, wdBackward

MoveEndWhile (Cset, Count) Thu hẹp/Mở rộng vùng chọn chừng nào còn gặp

Cset

Count > 0 hay wdFordward, wdBackward

MoveUntil (Cset, Count) Thu hẹp/Mở rộng vùng chọn đến khi gặp Cset

Count > 0, Count < 0 hay wdFordward, wdBackward

MoveWhile (Cset, Count) Thu hẹp/Mở rộng vùng chọn chừng nào còn gặp

Cset

Count > 0, Count < 0 hay wdFordward,

Trang 76

Expand (Unit) Mở rộng vùng chọn đến unit

Extend (Char) Mở rộng vùng chọn đến unit lớn

hơn nếu ExtendMode = True hoặc đến Char

Trang 77

Làm việc với đối tượng Selection

• Đối tượng Selection luôn tham chiếu đến:

– Text được chọn

– Vị trí cursor điểm chèn

• Ví dụ:

ActiveDocument.Paragraphs(1).Range Select

Trang 78

Làm việc với đối tượng Selection

• Selection.Collapse Direction : Loại bỏ vùng chọn và đặt điểm chèn tại Direction

• Selection.EndKey ( Unit , Extend ): Di chuyển vùng chọn đến cuối 01 đơn vị chỉ định

• Selection.EndOf ( Unit , Extend ): Di chuyển vùng

chọn đến cuối 01 bộ được chỉ định

chọn đến cuối 01 bộ được chỉ định

• Selection.Expand Unit : Mở rộng vùng chọn theo đơn vị Unit

• Selection.Home ( Unit , Extend )

• Selection.Move ( Unit , Extend )

• Selection.StartOf ( Unit , Extend )

Trang 79

Selection – Con trỏ

TypeText (Text) Nhập text Selection.TypeText

(“Hello”) TypeParagraph Nhập dấu paragraph Selection.TypeParagraph TypeBackSpace Xóa lui Selection.TypeBackSpace StartOf (Unit) Di chuyển con trỏ đến đầu unit gần

Trang 80

Selection – Con trỏ

Move (Unit, Count) Di chuyển con trỏ

Count > 0 hay Count < 0

HomeKey (Unit) Di chuyển con trỏ về đầu Unit

MoveLeft (Unit, Count) Di chuyển con trỏ sang trái Count > 0

EndKey (Unit) Di chuyển con trỏ về cuối Unit

EndKey (Unit) Di chuyển con trỏ về cuối Unit

MoveRight (Unit, Count) Di chuyển con trỏ sang phải Count > 0

MoveUp (Unit, Count) Di chuyển con trỏ lên trên Count > 0

MoveDown (Unit, Count) Di chuyển con trỏ xuống dưới Count > 0

Trang 81

Làm việc với đối tượng Selection

Trang 82

Selection – Soạn thảo

Copy CopyFormat Copy format vủa ký tự đầu (/và của dấu paragraph) CopyAsPicture Copy vùng chọn thành ảnh

Cut Delete Paste PasteFormat Áp dụng format cho vùng chọn

Font

Trang 83

Character, Word, Sentences

• Đếm số lượng ký tự trong 01 file:

Documents(“VBADemo.doc") Characters Count

• Đếm số lượng từ trong 01 file:

Documents(" VBADemo.doc ") Words Count

• Đếm số lượng câu trong 01 file:

• Đếm số lượng câu trong 01 file:

Documents(" VBADemo.doc ") Sentences Count

• Đếm số lượng đoạn trong 01 file:

Documents(" VBADemo.doc ") Paragraphs Count

• Xác định số Font:

Trang 84

Đối tượng Paragraph

Trang 85

VBA for Word Example

• Thêm vào trang Word:

Public Sub Them_Chu()

Selection TypeText Text :="Hello World!“ End Sub

• Kiểm tra Word start up ở thư mục nào:

• Kiểm tra Word start up ở thư mục nào:

Public Sub AutoExec ()

MsgBox ("The Word Startup Folder is: " _

& vbCrLf & Word Application StartupPath ) End Sub

Trang 86

VBA for Word Example

Chép nội dung file sẵn có sang file mới:

Public Sub AutoExec()

Dim MsgBoxResult

Dim SaveFileName

MsgBoxResult = MsgBox ( "Click Yes to load the default

letter" & vbCrLf & "Click No to load default Word.",

vbYesNo , "Document Environment")

vbYesNo , "Document Environment")

If MsgBoxResult = vbYes Then

Documents.Open ("THUCHANH_VBA.doc") SaveFileName = InputBox( "Enter a name for the letter",

"Letter Name ?")

If SaveFileName <> "" Then

ActiveDocument SaveAs (SaveFileName) End If

Ngày đăng: 18/04/2016, 23:31

TỪ KHÓA LIÊN QUAN