VBA (Visual Basic For Application) ជាផ្នែកដ៏សំខាន់មួយសំរាប់អ្នកសិក្សា Ms. Excel 2007 កំរិតខ្ពស់។ តាមរយៈ VBA គេអាចសរសេរកូដដើម្បំបំពេញមុខងារមួយចំនួនដែលកម្មវិធី Ms. Excel 2007 មិនមាន។
ខាងក្រោមនេះ មិត្តអ្នកអានទាំងអស់នឺងទទួលបានចំណេះមួយចំនួនក្នុងការសរសេរកូដ
ដោយប្រើប្រាស់ VBA។
I.អថេរ និងប្រភេទទិន្នន័យ
អថេរៈ នៅក្នុងការសរសេរកម្មវិធីកុំព្យូទ័រ អថេរគឺជាតំលៃមួយដែលបានរក្សាទុកជាបណ្តោះអាសន្នក្នុង memory របស់កុំព្យូទ័រនៅពេលដែលវាដំណើរការ។
ការប្រកាសអថេរៈ
ដើម្បីអាចប្រើប្រាស់អថេរបាន ជាចំាបាច់គេត្រូវប្រកាសវាជាមុន។ ការប្រកាសអថេរត្រូវចាប់ផ្តើម ដោយពាក្យ Dim។ឧទាហរណ៍ៈ
Sub sum
Dim x
Dim something
End sub
ចំណាំៈ អថេរត្រូវមានឈ្មោះ ហើយត្រូវដាក់នៅក្រោយពាក្យ dim។ ឈ្មោះអថេរត្រូវចាប់ផ្តើមដោយតួអក្សរ រឺ សញ្ញា _ (underscore) និងគ្មានសញា្ញចុច (.)។ ការដាក់ឈ្មោះអោយអថេរមិនត្រូវជាន់នឹងពាក្យគន្លឹះដូចមាន ក្នុងតារាងខាងក្រោមទេៈ
Get | Let | ||||
Lib | |||||
New | Nothing | ||||
ReDim | Resume | ||||
Set | Static | ||||
vbTab |
ប្រភេទទិន្នន័យ
ការប្រកាសអថេរខាងលើពុំមានកំនត់ប្រភេទទិន្នន័យទេ។ ធម្មតាអថេរដែលបានប្រកាសសុទ្ធតែ មានបំណងរក្សាទុកនូវទិន្នន័យជាប្រភេទផ្សេងៗដូចជាលេខ អក្សរ ថ្ងៃខែ ...។ល។ ហើយកុំព្យូទ័រក៏ត្រូវរៀបចំ
ទំហំនៃការរក្សាទុកទិន្នន័យទាំងនោះនៅក្នុងmemoryរបស់វាទៅតាមប្រភេទទិន្នន័យផងដែរ។
ខាងក្រោមនេះជាការប្រកាសអថេរដោយបញ្ជាក់នូវប្រភេទទិន្នន័យរបស់វា។
Sub Exercise
Dim s As string
Dim x As integer
Dim y As date
End sub
ដើម្បីជំនួយដល់ប្អូនៗក្នុងការកំនត់ប្រភេទទិន្នន័យនៅពេលប្រកាសអថេរ សូមមើលតារាងខាង
ក្រោមៈ
ប្រភេទទិន្នន័យ | តំលៃដែលអាចផ្ទុកបាន | រូបមន្តបំលែង | ផ្សេងៗ |
Byte | ពី 0ដល់ 255 | Cbyte() | ផ្ទុកតំលៃលេខគ្មានគ្បៀស |
Integer | ពី-32768ដល់ 32767 | Cint() | ផ្ទុកតំលៃលេខគ្មានគ្បៀស |
Long | ពី–2,147,483,648 ដល់ 2,147,483,647 | CLng() | ផ្ទុកតំលៃលេខគ្មានគ្បៀស |
Single | ពី-1.401298e–45 ដល់ -3.402823e38 សំរាប់តំលៃ អវិជ្ជមាន រឺ ពី1.401298e–45 ដល់3.402823e38 សំរាប់តំលៃ វិជ្ជមាន | CSng() | ផ្ទុកតំលៃលេខមានគ្បៀស |
Double | ពី–1.79769313486231e308 ដល់–4.94065645841247e–324 សំរាប់តំលៃ អវិជ្ជមាន រឺ ពី1.79769313486231e308 ដល់4.94065645841247e–324 សំរាប់តំលៃ វិជ្ជមាន | CDbl() | ផ្ទុកតំលៃលេខមានគ្បៀស |
String | Cstr() | ផ្ទុកតំលៃអក្សរ | |
Currency | ពី– 922,337,203,685,477.5808 ដល់ 922,337,203,685,477.5807 | Ccur() | ផ្ទុកតំលៃលេខរួបិយប័ណ្ណ |
Date | Cdate() | ផ្ទុកតំលៃថ្ងៃខែឆ្នាំ | |
Variant | ផ្ទុកតំលៃណាក៏បាន | ||
Boolean | Cbool() | ផ្ទុកតំលៃ true និង false |
វិសាលភាព និងដែនកំនត់របស់អថេរ
វិសាលភាព និងដែនកំនត់របស់អថេរបញ្ជាក់ពីកំរិតដែលអថេរនៅមានតំលៃ រឺគ្មានតំលៃអាច ប្រើប្រាស់បាន។ នៅក្នុង VBA ការប្រកាសអថេរមានពីកំរិតគឺ Local និង Global។
ការប្រកាសជាលក្ខណៈLocal
Option Explicit ‘Checking declaration of variables
Sub Divide
Dim x as integer
Dim result as single
x=10
result=x/3
End sub
àការប្រកាសជាលក្ខណៈLocal ត្រូវដាក់នៅក្នុងចន្លោះ sub និង end sub
àតំលៃរបស់អថេរដែលប្រកាសជាLocal អាចប្រើបានតែក្នុងតំបន់ sub និង end sub របស់វាប៉ុណ្ណោះ។
ចំណាំៈ
-Option Explicit ត្រូវបានប្រើដើម្បីត្រួតពិនិត្យថា អថេរបានប្រកាសត្រឹមត្រូវ រឺអត់។ ប្រសិនបើមិនបានប្រកាសទេ នោះកម្មវិធីនឹងបង្ហាញនូវកំហុស។
-អក្សរដែលសរសេរនៅពីក្រោយសញ្ញា ‘ (single quote)គឺសំរាប់ពន្យល់ពីបំណងនៃការសរសេរកូដ ដែលភាសាអង់គ្លេសហៅថា comment។
ការប្រកាសជាលក្ខណៈGlobal
ជាទូទៅ ការប្រកាសជាលក្ខណៈGlobalត្រូវសិ្ថតនៅក្រៅ sub និង end sub ។ឧទាហរណ៍ ខាងក្រោម
អថេរ LastName ត្រូវបានប្រកាសជា Global
Option Explicit
Dim LastName As String
Sub Exercise()
End Sub
ចំណាំៈ អថេរដែលប្រកាសជា Global អាចប្រកាសនៅក្នុង module ដាច់ដោយឡែកក៏បាន។ ហើយតំលៃរបស់វាអាចប្រើប្រាស់បានជាសាកល។
កំរិតនៃការចូលប្រើប្រាស់អថេរGlobal
អថេរGlobal អាចប្រកាសដោយប្រើពាក្យ Private រឺ Public ជំនួសអោយពាក្យ Dim។ហើយការប្រកាស
របៀបនេះក៏បញ្ជាក់ពីកំរិតនៃការចូលទៅប្រើប្រាស់តំលៃរបស់អថេរផងដែរ។
-ការប្រកាសដោយប្រើពាក្យ Private និង Public:
Option Explicit
Private LastName As String
Public FirstName As String
Sub Exercise()
Dim FirstName As String
FirstName = "Dara"
LastName = "Yuk"
End Sub
-ការប្រកាសដោយប្រើពាក្យ Private និង Public នៅក្នុង module:
Module 1:
Option Explicit
Public FullName As String
Module 2:
Option Explicit
Private LastName As String
Private FirstName As String
Sub Exercise()
FirstName = "Dara"
LastName = "Yuk"
FullName = FirstName & " " & LastName
ActiveCell.FormulaR1C1 = FullName
End Sub
អថេរប្រកាសដោយប្រើពាក្យ Private មានតែកូដនៅក្នុង module ដែលប្រកាសវាប៉ុណ្នោះទេទើបអាច
ប្រើវាងបាន។ រីឯ អថេរប្រកាសដោយប្រើពាក្យ Public កូដនៅក្រៅ module ដែលប្រកាសវាក៏អាចប្រើវាបាន ដែរ។
II.VBA Opterators
-Assignment operator (=)
ឧទាហរណ៍ៈ
Sub Exercise()
Dim Integral As Integer
Integral = 9578
End Sub
-The Line Continuation Operator ( _ )
ឧទាហរណ៍ៈ
Sub _
Exercise()
End Sub
- The Parentheses: ()
ឧទាហរណ៍ៈ
(8 + 3) * 5
- The Comma ,
ឧទាហរណ៍ៈ
Sub Exercise()
Dim FirstName As String, LastName As String, FullName As String
End Sub
- The Colon Operator( :)
ឧទាហរណ៍ៈ
Sub Exercise()
Dim FirstName As String, LastName As String
FirstName = "Valère" : LastName = "Edou"
ActiveCell.FormulaR1C1 = FirstName
End Sub
- String Concatenation (&)
ឧទាហរណ៍ៈ
Sub Exercise()
Dim FirstName As String, LastName As String, FullName As String
FirstName = "Valère"
LastName = "Edou"
FullName = FirstName & " " & LastName
End Sub
- Carriage Return-Line Feed(vbCrLf) សំរាប់ដកឃ្លាពីពាក្យមួយទៅពាក្យមួយទៀត
ឧទាហរណ៍ៈ
Sub Exercise()
Dim FirstName As String, LastName As String, FullName As String
Dim Accouncement As String
FirstName = "Valère"
LastName = "Edou"
FullName = FirstName & " " & LastName
Accouncement = "Student Registration - Student Full Name: " & _
vbCrLf & FullName
ActiveCell.FormulaR1C1 = Accouncement
End Sub
- Arithmetic Operators: +, -, *, /, , ^, Mod
-VBA Bit conjunction & disjunction: And, Or, Xor
Bit សំដៅលើតំលៃ ០ និង ១។ កុំព្យូទ័របានរក្សាទិន្នន័យទុកក្នុង memory ជាទំរង់ ០ និង ១។
ឧទាហរណ៍ខាងក្រោមបញ្ជាក់ពីការតភា្ជប់ bit ០ និង ១ ដោយឈ្នាប់ And Xor និង Or
០ | And | 0 | 0 |
0 | And | 1 | 0 |
1 | And | 0 | 0 |
1 | And | 1 | 1 |
0 | Or | 0 | 0 |
0 | Or | 1 | 1 |
1 | Or | 0 | 1 |
1 | Or | 1 | 1 |
0 | Xor | 0 | 0 |
0 | Xor | 1 | 1 |
1 | Xor | 0 | 1 |
1 | Xor | 1 | 0 |
III.Object សំខាន់ៗរបស់ spreadsheet( rows, columns, cells, workbooks, worksheets)
១-Workbooks: workbooks គឺជាបន្តុំនៃworkbook ពោលគឺវាផ្ទុកនូវ workbook object ជាច្រើន។ Workbooks មានប្រូភើធីមួយឈ្មោះ Item ដែលអាចអោយយើងចូលទៅប្រើប្រាស់ workbook objectបាន។ឧទាហរណ៍ខាងក្រោមបញ្ជាក់ពីការចូលទៅកាន់workbook ទីពីរៈ
Private Sub cmdSelectWorkbook_Click()
Dim SchoolRecords As Workbook
Set SchoolRecords = Workbooks.Item(2)
End Sub
-ការបង្កើតworkbook: ដើម្បីបង្កើតworkbookគេត្រូវប្រើ Add method របស់ workbooks
Private Sub cmdNewWorkbook_Click()
Dim SchoolRecords As Workbook
Set SchoolRecords = Workbooks.Add
End Sub
-ការរក្សាទុកworkbook បន្ទាប់ពីធ្វើការរួចហើយដោយប្រើ SaveAs method របស់ workbooks
Private Sub cmdNewWorkbook_Click()
Dim SchoolRecords As Workbook
Set SchoolRecords = Workbooks.Add
SchoolRecords.SaveAs "SchoolRecords.xlsx"
End Sub
-ការបើក workbook ដោយប្រើ Open method របស់ workbooks
Private Sub cmdOpenWorkbook_Click()
Workbooks.Open "SchoolRecords.xlsx"
End Sub
៤-Cells របស់Worksheet
-ការចូលទៅកាន់cell
Sub Exercise()
‘refer to cell D6
Workbooks.Item(1).Worksheets.Item("Sheet1").Range("D6")
End Sub
Sub Exercise()
‘refer from cell B2 to H6
Range("B2:H6")
End Sub
Sub Exercise()
‘refer from cell D2 to B5 and from F8 to I14
Range("D2:B5, F8:I14")
End Sub
-ការជ្រើសរើសcell
Sub Exercise()
'select cell D6
Range("D6").Select
End Sub
Sub Exercise()
‘select from cell D2 to B5 and from F18 to I14
Range("D2:B5, F8:I14").Select
End Sub
Sub Exercise()
‘select all cells
Rows.Select
End Sub
-ការបោះតំលៃទៅអោយ cell
Private Sub CommandButton1_Click()
Sheet1.Cells(1, 1) = "Dara"
‘ រឺ
Sheet1.Range("D1") = "Channa"
End Sub
IV-Form និង controls ដទៃទៀត
Form ជាcontrol សំខាន់មួយដែលផ្តល់លទ្ធភាពអោយអ្នកប្រើប្រាស់ធ្វើការបញ្ចូល លុប កែ រឺមើលទិន្នន័យបានងាយស្រួល។
-ការបង្កើត From:
១.ចុចលើ developer tab រួចុចលើ Visal basic
២.បន្ទាប់ពីកម្មវិធីធ្វើការបើកផ្ទាំង Visual Basic Editor រួចមក សូមចុចលើ
នៅខាងឆ្វេង គឺវាផ្ទាំងcontrols ដែលអាចទាញយកមកដាក់លើ From នៅផ្នែកខាងស្តាំ។
ខាងក្រោមជាតារានៃ controls សំខាន់ៗមួយចំនួនដែលគេប្រើជាញឹកញាប់
ខាងក្រោមជាតារានៃ controls សំខាន់ៗមួយចំនួនដែលគេប្រើជាញឹកញាប់
៦-ការប្រើប្រាស់ឃ្លាលក្ខខ័ណ្ឌ(conditional statements)
If លក្ខខ័ណ្ឌត្រូវត្រួតពិនិត្យ Then អ្វីដែលត្រូវធ្វើ
ឧទាហរណ័ៈ
Sub Exercise()
Dim IsMarried As Boolean
Dim TaxRate As Double
TaxRate = 33.0
MsgBox("Tax Rate: " & TaxRate & "%")
IsMarried = True
If IsMarried = True Then TaxRate = 30.65
MsgBox("Tax Rate: " & TaxRate & "%")
End Sub
ប្រសិនបើ អ្វីដែលត្រូវធ្វើមានច្រើន គេត្រូវប្រើរូបមន្តដូចខាងក្រោម៖
If លក្ខខ័ណ្ឌត្រូវត្រួតពិនិត្យ Then
អ្វីដែលត្រូវធ្វើ
អ្វីដែលត្រូវធ្វើ
អ្វីដែលត្រូវធ្វើ
End If
ឧទាហរណ៍ៈ
Sub Exercise()
Dim IsMarried As Boolean
Dim TaxRate As Double
TaxRate = 33#
MsgBox ("Tax Rate: " & TaxRate & "%")
IsMarried = True
If IsMarried = True Then
TaxRate = 30.65
MsgBox ("Tax Rate: " & TaxRate & "%")
End If
End Sub
V-Procedures
Procedure គឺជាប្លុកនៃកូដដែលគេសរសេរដើម្បីបំពេញកិច្ចការ។ គេអាចទាញយក procedure មកប្រើប្រាស់បានទៅតាមតំរូវការ។
រូបមន្តបង្កើត procedure:
Sub ProcedureName()
statement
End Sub
ឧទាហរណ៍ៈ
Sub CreateCustomer()
Dim strFullName As String
strFullName = "Khorn Channa"
End Sub
ដើម្បីហៅ procedure មកប្រើប្រាស់ គេត្រូវសរសេរៈ
Sub Exercise()
CreateCustomer
End Sub
រឺ
Sub Exercise()
Call CreateCustomer
End Sub
VI-Functions
Function ត្រូវបានបង្កើតក្នុងគោលបំណងដូច procedure ដែរ។ វាគ្រាន់តែខុសគ្នាត្រង់ function អាច
បោះចេញនូវលទ្ធផល(return a value) តែ procedure មិនអាច(cant return a value)។
រូបមន្តបង្កើតfunction:
AccessModifier Function FunctionName() As DataType
End Function
ជាទូទៅ AccessModifier អាចជា Private រឺ Public។ បើគេមិនដាក់AccessModifier កម្មវិធីនឹងយក private ដែលបញ្ជាក់ថា function អាចហៅយកមកប្រើបានតែក្នុង module ដែលប្រកាសវាប៉ុណ្ណោះ។
ឧទាហរណ៍ៈ
Function CallMe() As String
Dim Salute As String
Salute = "You can call me Al"
CallMe=Salute
End Function
ដើម្បីហៅវាមកប្រើ គេសរសេរដូចខាងក្រោមៈ
Sub Exercise()
CallMe
End Sub
VII-Argument របស់ Procedure និង Function
Procedure និង function ដែលបានបង្កើតខាងលើពុំមានប្រើប្រាស់ argument ទេ។ argument ជាតំលៃដែលត្រូវបោះទៅអោយ procedure រឺ function។
រូបមន្តៈ
Sub ProcedureName(rgument)
End Sub
Function FunctionName(Argument) As DataType
Function Sub
ឧទាហរណ៍ៈ
Function GetFullName(FirstName As String, LastName As String)
Dim fullname as string
fullname=FirstName & LastName
GetFullName=fullname
End Sub
ឧទាហរណ៍ពីហៅ function ខាងលើៈ
Sub Exercise()
Dim FirstName As String, LastName As String
Dim FullName As String
FirstName = "Dara "
LastName = "Yuk"
FullName = GetFullName(FirstName, LastName)
ActiveCell.FormulaR1C1 = FullName
End Sub
ចំពោះការហៅ procedure ក៏ដូចគ្នានេះដែរ ពោលគឺតំលៃរបស់ argument ត្រូវបោះទៅអោយ procedure
ដូចគ្នា។
២-Worksheets
Workbook គឺជាស៊េរីនៃ worksheets ជាច្រើន។នេះមានន័យថាworkbook ផ្ទុកនូវworksheets ជាច្រើន។
-ការចូលទៅកាន់ worksheet
Sub Exercise()
Dim journalentry as worksheet
Set journalentry=Workbooks.Item(1).Worksheets(2)
End Sub
រឺ
Sub Exercise()
Dim journalentry as worksheet
Set journalentry=Workbooks.Item(1).Sheets.Item("Sheet3")
End Sub
រឺ
Sub Exercise()
Dim journalentry as worksheet
Set journalentry=Workbooks(1).Worksheets(2)
End Sub
-ការ select worksheet
Private Sub Exercise()
Sheets("Sheet1").Select
End Sub
-ការដាក់ឈ្មោះអោយ worksheet ដោយប្រើប្រាស់ Name ប្រូភើធី
Private Sub Exercise()
Sheets("Sheet1").Name = "Employees Records"
End Sub
-បន្ថែម worksheet ដោយប្រើប្រាស់ Add method របស់ sheets collection
Private Sub cmdNewWorksheet_Click()
Sheets.Add
End Sub
-លុប worksheet ដោយប្រើប្រាស់ delete method
Private Sub cmdRemoveSheet_Click()
Worksheets("Sheet3").Delete
txtRemoveSheet.Text = ""
End Sub
២-ជួរឈរ(Columns) របស់Worksheet
-ការចូលទៅកាន់ជួរឈរ(Column) ដោយប្រើ index
Sub Exercise()
' This refers to the 1th column
Workbooks(1).Worksheets(2).Columns(1)
' This refers to the 12th column
Workbooks(1).Worksheets(2).Columns(12)
End Sub
-ការចូលទៅកាន់ជួរឈរ(Column) ដោយប្រើ name/label
Sub Exercise()
“This refers to the column named/labeled A
Columns("A")
' This refers to the column named DR
Columns("DR")
End Sub
Sub ColumnReference()
‘ Refer to the range of columns D to G
Columns("D:G")
End Sub
Sub Exercise()
‘This refers to Columns H, D, and B
Range("H:H, D:D, B:B")
End Sub
-ការជ្រើសរើសជួរឈរ(column selection)
Sub Exercise()
‘This selects the fourth column
Columns(4).Select
End Sub
Sub Exercise()
‘This selects the column labeled ADH
Columns("ADH").Select
End Sub
Sub Exercise()
‘This selects the range of columns from Column D to Column G
Columns("D:G").Select
End Sub
Sub Exercise()
‘This selects Columns B, D, and H
Range("H:H, D:D, B:B").Select
End Sub
-ការបង្កើតជួរឈរ(Column)
Sub CreateColumn()
Columns(3).Insert
End Sub
Sub CreateColumns()
Range("H:H, D:D, B:B").Insert
End Sub
-ការលុបជួរឈរ(Column)
Sub DeleteColumn()
'delete 1 column
Columns("D:D").Delete
End Sub
Sub DeleteColumns()
‘delete many columns
Columns("D:F").Delete
End Sub
-ការកំនត់តំលៃអោយទំហំទទឹងនៃជួរឈរ
Sub Exercise()
Columns("C").ColumnWidth = 4.5
End Sub
Sub Exercise()
Range("C:C, E:E, H:H").ColumnWidth = 5#
End Sub
-ការកំនត់អោយទំហំនៃជួរឈររីក រឺរួមដោយស្វ័យប្រវត្តិ
Private Sub Exercise()
Selection.Columns.AutoFit
End Sub
-ការលាក់ រឺបង្ហាញជួរឈរ
Private Sub Exercise()
'hide column F
Columns("F:F").Select
Selection.EntireColumn.Hidden = True
End Sub
Private Sub Exercise()
‘reveal column F
Columns("F:F").Select
Selection.EntireColumn.Hidden = True
End Sub
៣-ជួរដេក(Rows) របស់Worksheet
-ការចូលទៅកាន់ជួរដេក
Sub Exercise()
'Refere to 5th row
Workbooks.Item(1).Worksheets.Item(2).Rows(5)
End Sub
Sub Exercise()
'Refere to 2th to 6th row
Rows("2:6")
End Sub
Sub Exercise()
'Refere to 3th, 5th, and 8th row
Range("3:3, 5:5, 8:8")
End Sub
-ការជ្រើសរើសជួរដេក
Sub Exercise()
'select 6th row
Rows(6).Select
End Sub
Sub Exercise()
‘select from 2th to 6th row
Rows("2:6").Select
End Sub
Sub Exercise()
‘select 3th, 5th, and 8th row
Range("3:3, 5:5, 8:8").Select
End Sub
Sub Exercise()
‘select all rows
Rows.Select
End Sub
-ការកំនត់កំពស់អោយជួរដេក
Sub Exercise()
Rows(6).RowHeight = 2.5
End Sub
-ការបង្កើតជួរដេក
Sub Exercise()
'add 1 row
Rows(3).Insert
End Sub
Sub Exercise()
‘add many rows
Range("3:3, 6:6, 10:10").Insert
End Sub
-ការលុបជួរដេក
Sub Exercise()
'delete 1 row
Rows(3).Delete
End Sub
Sub Exercise()
'delete many rows
Range("3:3, 6:6, 10:10").Delete
End Sub
-ការលាក់ជួរដេក
Private Sub Exercise()
Rows("6:6").Select
Selection.EntireRow.Hidden = True
End Sub
(ដកស្រង់ចេញពីសៀវភៅ Application II Ms Excel របស់វិទ្យាស្ថានសហប្រតិបត្ដិការអន្ដរជាតិ កម្ពុជា)
2 បញ្ចេញមតិ:
Khmer unicode character string is different from other unicode character, we can t write it on VBA editor of Excel or MS Access.
LCID Hex for Khmer as 0453 and the LCID Dec as 1107 but I don't understand how or if that can be used to sort Khmer correctly in Access.
Post a Comment