Showing posts with label Excel 2007. Show all posts
Showing posts with label Excel 2007. Show all posts

Thursday, January 19, 2012

អំពី VBA (តចប់)

៤-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 សំខាន់ៗមួយចំនួនដែលគេប្រើជាញឹកញាប់
៦-ការប្រើប្រាស់ឃ្លាលក្ខខ័ណ្ឌ(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(ArgumentAs 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
ដូចគ្នា។

អំពី VBA (ត)

២-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



អំពី VBA


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) និងគ្មានសញា្ញចុច (.)។ ការដាក់ឈ្មោះអោយអថេរមិនត្រូវជាន់នឹងពាក្យគន្លឹះដូចមាន ក្នុងតារាងខាងក្រោមទេៈ

ប្រភេទទិន្នន័យ
          ការប្រកាសអថេរខាងលើពុំមានកំនត់ប្រភេទទិន្នន័យទេ។
ជាធម្មតាអថេរដែលបានប្រកាសសុទ្ធតែ មានបំណងរក្សាទុកនូវទិន្នន័យជាប្រភេទផ្សេងៗដូចជាលេខ អក្សរ ថ្ងៃខែ ...។ល។ ហើយកុំព្យូទ័រក៏ត្រូវរៀបចំ
ទំហំនៃការរក្សាទុកទិន្នន័យទាំងនោះនៅក្នុង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


Twitter Delicious Facebook Digg Stumbleupon Favorites More