Vòng lặp For
Ví dụ:
Sub danhsoThutu()
Dim i As Integer
For i = 1 to 10000
Cells(i, 2) = i
next i
End Sub
Cells() : Chỉ giá trị của ô
Tại sao không nên dùng Msgbox để kiểm tra biến
Giả sử với vòng For
Sub taisao()
For i=1 to 10
MsgBox "Xin chao == " & i
Next i
End Sub
Sẽ tạo ra 10 msgbox, nhấn ok mỏi tay luôn.
Tuy nhiên nếu sử dụng câu lệnh
Debug.Print"Xin chao ==" & 1
Kết quả sẽ vào cửa sổ Immediate, không cần phải nhấn ok 10 lần.
Thursday, December 31, 2015
Wednesday, December 30, 2015
Các phép toán và Các dạng biến trong VBA
Các phép toán
Câu lệnh mẫu cho phép cộng :
Worksheet(1).Range("A1").Value = Number1 + Number2
Tương tự với phép trừ - , phép nhân * và phép chia /
Các dạng biến
Byte ( kiểu biến dữ liệu )
Boolean ( kiểu biến đúng sai)
Integer ( biến giá trị nguyên, khoảng 32k xung quanh số 0 )
Long ( biến giá trị nguyên, khoảng 2 tỉ xung quanh số 0 )
Currency ( kiểu biến tiền tệ )
Single ( biến thực, có khả năng làm tròn 6 số )
Double ( biến thực, có khả năng làm tròn 14 số )
Date ( kiểu ngày tháng)
String ( chuỗi kí tự, kiểu văn bản )
Variant ( biến có thể là số hoặc chữ )
Lưu ý : MsgBox là câu lệnh tạo ra 1 box hiển thị kết quả
Câu lệnh mẫu cho phép cộng :
Worksheet(1).Range("A1").Value = Number1 + Number2
Tương tự với phép trừ - , phép nhân * và phép chia /
Các dạng biến
Byte ( kiểu biến dữ liệu )
Boolean ( kiểu biến đúng sai)
Integer ( biến giá trị nguyên, khoảng 32k xung quanh số 0 )
Long ( biến giá trị nguyên, khoảng 2 tỉ xung quanh số 0 )
Currency ( kiểu biến tiền tệ )
Single ( biến thực, có khả năng làm tròn 6 số )
Double ( biến thực, có khả năng làm tròn 14 số )
Date ( kiểu ngày tháng)
String ( chuỗi kí tự, kiểu văn bản )
Variant ( biến có thể là số hoặc chữ )
Lưu ý : MsgBox là câu lệnh tạo ra 1 box hiển thị kết quả
Monday, December 28, 2015
Những khái niệm cơ bản về biến và tên biến
Khái niệm cơ bản về biến.
Giả sử A là chiều dài cạnh hình vuông
Xét ví dụ
Dim MyNumber As integer
Tức là Giả sử MyNumber là số nguyên
Lưu ý :
Không thể đặt giá trị và gán giá trị cùng 1 dòng ( như trên Visual Basic.NET)
tức là sẽ sai khi viết
Dim MyNumber As Integer = 10
Phải viết
Dim MyNumber As Integer
MyNumber = 10
Tên biến
Quy định :
Không thể bắt đầu tên biến bằng một số
Không thể dùng dấu cách khi đặt tên biến
Không dùng các kí tự đặc biệt khi đặt tên biến như !, %, ?, #, $
Thực hành
Gán giá trị ô A1 bằng 10
Worksheets(1).Range("A1").Value = 10
hay trong trường hợp này
Worksheets(1).Range("A1").Value = MyNumber
cũng có thể áp dụng cho đối tượng là range
Worksheets(1).Range("B1:B10").Value = MyNumber
Giả sử A là chiều dài cạnh hình vuông
Xét ví dụ
Dim MyNumber As integer
Tức là Giả sử MyNumber là số nguyên
Lưu ý :
Không thể đặt giá trị và gán giá trị cùng 1 dòng ( như trên Visual Basic.NET)
tức là sẽ sai khi viết
Dim MyNumber As Integer = 10
Phải viết
Dim MyNumber As Integer
MyNumber = 10
Tên biến
Quy định :
Không thể bắt đầu tên biến bằng một số
Không thể dùng dấu cách khi đặt tên biến
Không dùng các kí tự đặc biệt khi đặt tên biến như !, %, ?, #, $
Thực hành
Gán giá trị ô A1 bằng 10
Worksheets(1).Range("A1").Value = 10
hay trong trường hợp này
Worksheets(1).Range("A1").Value = MyNumber
cũng có thể áp dụng cho đối tượng là range
Worksheets(1).Range("B1:B10").Value = MyNumber
Thuộc tính Offset và Resize
Ví dụ : Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select
Tức là : Chọn vào vị trí dịch 1 cột sang phải và 1 dòng xuống dưới so với ô A1
Nếu chỉ muốn dịch chuyển xuống 1 dòng so với A1
Range("A1").Offset(1).Select
Nếu muốn dịch sang ô B1
Range("A1").Offset(,1).Select
Còn với Resize, chúng ta sẽ thay đổi vùng chọn ban đầu bằng cách thêm ô hay cột cho nó kể từ dùng dữ liệu đầu tiên được chọn.
Chúng ta cùng xem xét ví dụ sau :
Range("A1").Resize(RowSize:=2, ColumnSize:=2).Select
Tức là : Chọn một vùng dữ liệu bắt đầu từ ô A1 và có số dòng là 2 và số cột là 2, tức là vùng dữ liệu A1:B2
Chú ý :
Offset thì là RowOffset = ...., Resize là RowSize=...
Giá trị thông số của Resize không có giá trị âm
Chúng ta có thể viết tắt như sau:
Range("A1").Resize(2,2).Select
Nếu chỉ chỉnh thêm cột mà không thêm dòng
Range("A1").Resize(2).Select
Thêm dòng mà không muốn thêm cột:
Range("A1").Resize(,2).Select
Nếu chọn A1:A3 làm đối tượng cho Range thì Resize luôn ưu tiên chọn ô đầu tiên là ô A1
Có thể áp dụng Offset và Resize trên cùng 1 câu lệnh
Subscribe to:
Comments (Atom)