Saturday, February 10, 2018

vba02

Một số kiểu dữ liệu thường dùng trong VBA

1. Kiểu số nguyên (Byte, Integer, Long)

Tên kiểu

Phạm vi

Chiếm trong bộ nhớ

Byte

0 đến 28-1 (0 à 255)

1 Byte

Integer

-215 à 215-1

(-32.768 à 32.767)

2 Byte

(215 vì 1 bít chứa dấu)

Long

-231 à 231-1

(-2.147.483.648 à 2.147.483.647)

4 Byte

(231 vì 1 bít chứa dấu)

Các phép toán: + - * / Mod (chia lấy phần dư) \ (chia lấy phần nguyên)
VD:
7 mod 3 = 1      8 mod 2 = 0
7 \ 3 = 2        10 / 3 = 3.33..333
(-5) mod 2 = -1 >>Để cho kết quả đúng là số dương ta dùng công thức sau:
Vd: a mod b (a<0,b>0) khi đó kết quả a mod b được viết lại như sau: 
b - (-a mod b)khi đó (-5 mod 2) = 2-(-(-5) mod 2)=1  

2. Kiểu số thực (Single, Double)

- Sử dụng dấu “.” trong biểu diễn thập phân
- Phép toán: + -  * /
- Singgle (2Byte); Double (4Byte)

3. Kiểu ngày (Date)

- Hằng viết dưới dạng:  #11/4/1983# là ngày 04 tháng 11 năm 1983 (m/d/yyyy).
- Phép toán:
Ngày – Ngày = là khoảng cách giữa hai ngày (theo số ngày)
Ngày – Số = Ngày trước đó (#11/4/1983# - 1 =  ngày 3 tháng 11 năm 1983)
Ngày + Số = Ngày sau (#11/4/1983# + 1 = ngày 5 tháng 11 năm 1983).
Ví dụ:
Sub ddmmyyyy()
  Dim ngay As Date
  ngay = #11/4/1983#
  MsgBox ngay & ChrW(10) & ngay + 1 & ChrW(10) & ngay - 1
  MsgBox "Ngay: " & Day(ngay) & ChrW(10) & "Thang: " & Month(ngay) & ChrW(10) & "Nam:" & Year(ngay)
End Sub
Một số hàm xử lý kiểu Date
Tên hàm
Ý nghĩa
date()
Trả về ngày hiện tại
Cdate()
Chuẩn hóa kiểu ngày tháng
Datediff()
Tính khoảng cách thời gian
DateSerial()
Trả về kiểu ngày tháng
IsDate()
Kiểm tra kiểu dữ liệu ngày tháng
Day()
Trả về ngày
Month()
Trả về tháng
Year()
Trả về năm
Weekday()
Trả về thứ trong tuần
Now()
Trả về ngày giờ hiện tại
Hour()
Trả về giờ
Minute()
Trả về phút
Second()
Trả về giây
Time()
Trả về giờ hiện tại
TimeSerial()
Trả về kiểu giờ

3. Kiểu logic (Boolean)

- Chỉ có hai giá trị: True (đúng) và False (sai).
- Hằng: True, False
- Phép toán: AND (và) OR (hoặc) NOT (phủ định)
VD:  (a mod 2 =0) And (a mod 3=0) à True  thì a là số chẵn và a chia hết cho 3

4. Kiểu xâu kí tự (String)

- Lưu trữ tối đa 256 kí tự.
- Hằng xâu: đặt trong cặp dấu nháy kép Ví dụ: “Ha Noi”
- Phép toán: & (phép ghép xâu)

Ví dụ: “Chu” & “Se” à “ChuSe”;

s1=”Gia”   s2=”Lai”  à s=s1&“ ”&s2 à S=”Gia Lai”

Một số hàm cho xử lý chuỗi

Tên hàm
Ý nghĩa
LCase
Chuyển chuỗi thành viết thường
UCase
Chuyển chuỗi thành viết hoa
Left
Lấy ký tự bên trái
Right
Lấy ký tự bên phải
Mid
Lấy ký tự ở giữa
Trim
Bỏ dấu cách thừa trong chuỗi
Len
Trả về độ dài của chuỗi

5. Kiểu mảng (Array)

Cách khai báo (mảng một chiều):
Cú pháp: Dim TênMảng(n) As KiểuPhầnTử ' n nguyên dương tương ứng với n+1 phần tử
Ví dụ:
Dim  a(9)  As  Integer – mảng 10 phần tử kiểu số nguyên
Dim  b(10)  As  String – mảng 11 phần tử kiểu xâu kí tự
Dim  c(4)  As  Date – mảng 5 phần kiểu ngày
Lưu ý: chỉ số trong mảng một chiều ở trên bắt đầu từ 0
6. Kiểu bản ghi
Cúp pháp:
Type Tên kiểu bản ghi
     Trường 1 As Kiểu dữ liệu
     Trường 2 As Kiểu dữ liệu
     …
     Trường n As Kiểu dữ liệu
End Type
Ví dụ:
Type hocsinh
    hoten As String
    ngaysinh As Date
    GT As Boolean
    DBT As Double
End Type
Dim teo As hocsinh
à Để tham chiếu đến hoten, giới tính, điểm trung bình của biến teo ta viết:
teo.hoten, teo.GT, teo.DTB…
* Dim dslop(54) As hocsinh ‘Khai báo 1 danh sách tối đa 55 học sinh
à Để tham chiếu đến họ tên của học sinh thứ i ta viết: dslop(i).hoten
* Khai báo biến
[Static|Public|Private|DimTên biến As Kiểu dữ liệu

vba01

I. Kiến thức về VBA
1. Kích hoạt Menu để lập trình VBA (Excel 2010 trở lên)
B1. File → Options
B2. Nháy chọn Customize Ribbon
B3. Nháy chọn Developer
B4. Kiểm tra trên Menu của hệ thống đã có thêm menu DEVELOPER
2. BÀI 1
   - Tạo tự động 1 Macro.
   - Tự tạo 1 hàm.
   - Gắn macro cho 1 đối tượng để kích hoạt.
----------------------------------------------------------------
1. Macro tự tạo
Sub Macro_vd()
'
' Macro_vd Macro

    Rows("4:4").Select 'Chon hang 4
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ' Chen vao 1 hang truoc hang 4, hang 4 bi day xuong...
    Columns("C:C").Select ' Chon cot C
    Range("C3").Activate
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' Chen vao 1 cot truoc cot C, cot C bi day sang phai...
    Columns("C:C").Select ' Chon cot C
    Selection.Delete Shift:=xlToLeft 'Xoa cot C, cac cot sau cot C don ve ben trai...
    Rows("4:4").Select ' Chon hang 4
    Selection.Delete Shift:=xlUp 'Xoa hang hang 4, cac hang duoi tu don len tren...
End Sub
2. Hàm Hellovba
Function hellovba(dc As Range) As String
    hellovba = "Hello " & dc.Value & "!"
End Function
3. Hàm tong_teo
Function tong_teo(vdc As Range) As Long
    Dim s As Long
    s = 0
    For Each c In vdc
        s = s + c.Value
    Next c
    tong_teo = s
End Function
4. Gắn macro
Sub SmileyFace1_Click()
    For Each c In Range("C5:F5")
        MsgBox "Xin chao " & c.Value
    Next c
End Sub

----------------------------------------------------------------

Tải file ví dụ: Tại đây