---
title: "Excel VBA พื้นฐาน ตอนที่ 1 : เขียน Code ครั้งแรก"
url: https://www.thepexcel.com/excel-vba-basic-01/
type: post
date: 2020-05-09
updated: 2022-04-24
author: Sira Ekabut
categories: [Excel VBA, "Highlights : บทความแนะนำ"]
---

# Excel VBA พื้นฐาน ตอนที่ 1 : เขียน Code ครั้งแรก

มีแฟนเพจหลายท่านอยากให้ผมสอนเรื่องเกี่ยวกับ VBA ให้ แม้ผมจะเคยเขียนเกี่ยวกับ[เรื่อง Concept สำคัญของ VBA ในแง่ของหลักการ](https://www.thepexcel.com/10-excel-vba-concepts/)ไปแล้ว แต่ผมยังไม่ได้สอนเขียน Code แบบจริงๆ จังๆ ซักที แต่ตอนนี้คงถึงเวลาแล้วล่ะ ^^

 

อ่อ! ในบทความนี้จะไม่ได้สอนเรื่อง record macro นะครับ อันนั้นลองไปหัดกันเองได้นะ หรือดูใน youtube ก็น่าจะมีเยอะเลย ในบทความนี้จะสอนหลักการการเขียนโปรแกรมให้ เพื่อให้เพื่อนๆ สามารถอ่าน code และแก้ code เองได้หลังจาก record macro แล้วนะครับ

 

## การเปิด Developer Ribbon

 

เริ่มแรกสุดเลย การที่เราจะใช้งาน VBA ได้ก็ต้องเปิด Ribbon Developer ขึ้นมาซะก่อน ซึ่งอยู่ใน Excel Option ครับ

 ![1](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-01-1024x838.png) 

จะเข้าไปเขียนโปรแกรมใน VB Editor (หรือ VBE) ก็สามารถกดปุ่ม Visual Basic หรือ Alt+F11 ได้ครับ (ผมกด Alt+F11 ตลอด)

 ![2](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-02-1024x218.png) 

แต่เดี๋ยวเราปิดมันไปก่อนก็ได้ครับ เอาเป็นว่าเปิด VBE ขึ้นมาเป็นแล้วเนอะ กด Alt+F11 นะ

 

## การ Trigger คำสั่งด้วยปุ่ม

 

จะสั่งให้ Code ทำงานได้ มันต้องมี Trigger หรือ Event บางอย่างเกิดขึ้น ซึ่งตัวที่ใช้บ่อยที่สุดอันนึงก็คือการกดปุ่ม แล้วทำให้เกิด action บางอย่างขึ้นตาม Code ที่เราสั่ง

 

เรากำลังจะสร้างปุ่มที่ว่านี่แหละ ให้เรากด add button ดังนี้ Developer-> Insert -> Form Control -> Button

 ![3](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-05-1024x341.png) 

จากนั้นวาดรูปสี่เหลี่ยมลงไปในที่ว่างๆ ที่ต้องการให้เกิดปุ่มขึ้น

 ![4](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-06-1024x547.png) 

จากนั้นมันจะเข้าสู่ VBE ภายใต้ Sub ที่ชื่อว่า Test ตามชื่อ Macro ที่เราเขียนเลย

 ![5](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-07.png) 

เมื่อเรากด Alt+F11 เพื่อเข้าสู่ VBE หรือกดสร้างปุ่มแล้ว เราก็จะเขียน code ได้

 

## การ Assign ค่า และเรื่องของตัวแปร

 

ก่อนจะเขียน Code ผมอยากให้เพื่อนๆ เข้าใจ Concept สำคัญในการเขียนโปรแกรมอันนึง ก็คือการใช้เครื่องหมาย = หรือ assignment operator ว่า เราสามารถเอาค่าไปใส่ให้กับตัวแปร หรือใส่ให้กับ Object ต่างๆ ที่เราต้องการได้

 

โดยรูปแบบคือ**ให้ตัวด้านซ้าย มีค่าเท่ากับตัวด้านขวา**

 

```
Object = ค่า
ตัวแปร = ค่า
```

 

เช่น

 

```
x=10
```

 

แปลว่าให้ตัวแปร x มีค่าเป็น 10

 

แล้วถ้าเราเขียนต่อไปอีกบรรทัดว่า

 

```
x=x+1
```

 

แม้จะดูผิดหลักคณิตศาสตร์ แต่เครื่องหมาย = ในที่นี้ไม่ใช่เครื่องหมายเปรียบเทียบในคณิตศาสตร์ แต่ในการเขียนโปรแกรม มันคือเครื่องหมายที่ใช้ในการกำหนดค่า (assignment operator) ที่ให้ตัวด้านซ้าย มีค่าเท่ากับตัวด้านขวา แล้ว Code ที่เราเขียนก็จะถูก Run จากบนลงล่างไปเรื่อยๆ

 

ดังนั้นความหมายของ x=x+1 คือให้เอาค่าเดิมใน x (ซึ่งคือ 10) ไปบวก1 จะได้ 11 แล้วใส่แทนค่าลงไปในตัวแปร x

 

ดังนั้น x จะมีค่าใหม่เป็น 11 นั่นเอง

 

## การอ้างอิง Cell/Range โดยใช้ Range

 

ภายใน Sub Test() เราสามารถเขียน Code ในรูปแบบ Range(“Cell Reference”) เพื่ออ้างอิง Cell/Range ได้ เช่น

 

```
Range("A1")=10
```

 

แปลว่า ให้ช่อง A1 มีค่าเป็น 10

 

พอเขียนเสร็จก็กดปิด VBE ไปก่อนได้เลย แล้วลองไปกดปุ่มที่เราสร้างดูซะ

 ![6](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-09.png) 

จากนั้น Code ที่เราเขียนก็จะถูก Run ทำให้ช่อง A1 มีเลข 10 อยู่

 ![7](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-10.png) 

นอกจากจะอ้างอิง Cell เดียวแล้วยังใส่เป็นช่วงก็ได้ เช่น

 

```
Range("A1:C3") = "Cat"
```

 

สังเกตุว่า Cat ใส่อยู่ในเครื่องหมายคำพูด เพราะเป็น Text นะครับ

 ![8](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-11.png) 

นอกจากนี้ถ้าเรามีการตั้งชื่อ Defined Name ไว้ เราก็สามารถเอามาใช้ใน Range นี้ได้ด้วย เช่น

 

```
Range("ชื่อที่ตั้งไว้") = 999
```

 

**ซึ่งในชีวิตจริง เราจะใช้การอ้างอิงด้วยชื่อบ่อยมาก **เพื่อป้องกันปัญหาการ แทรก/ลบ cell จนตำแหน่งช่องเปลี่ยนไปจนใน Code ไม่ตรงกับความเป็นจริง

 

## การใช้ Message Box

 

เราสามารถให้ VBA สร้างผลลัพธ์เป็น Message Box เด้งขึ้นมาได้ ด้วยคำสั่งง่ายๆ ว่า MsgBox(“คำที่ต้องการ”) เช่น

 

```
MsgBox ("สวัสดี")
```

 ![9](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-12.png) 

## การใช้เครื่องหมาย & เชื่อมข้อความ

 

เราสามารถใช้เครื่องหมาย & มาเชื่อมข้อความ เพื่อผสมรวมคำจากค่าคงที่เช่น “สวัสดี” กับการอ่านค่าจาก Cell ช่อง B1 ที่ผมตั้งชื่อไว้ว่า FirstNameได้ เช่น

 

ที่สวัสดีอยู่ในเครื่องหมายคำพูด เพราะเป็น Text ส่วน inputName เป็นชื่อตัวแปร ไม่ต้องอยู่ในเครื่องหมายคำพูดนะครับ

 

```
Sub Test()
inputName = Range("FirstName")
MsgBox ("สวัสดี " & inputName)

End Sub
```

 ![Excel VBA พื้นฐาน](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-13.png) 

## การใช้ IF กำหนดเงื่อนไข

 

เราสามารถเขียน if ใน VBA ได้ในรูปแบบของ

 

```
If เงื่อนไข Then
    ทำอะไรถ้าเงื่อนไขเป็นจริง
Else
    ทำอะไรถ้าเงื่อนไขเป็นเท็จ
End If
```

 

เช่น

 

```
Sub Test()
inputName = Range("FirstName")

If inputName = "ศิระ" Then
    MsgBox ("สวัสดีนายท่าน")
Else
    MsgBox ("ยินดีที่ได้รู้จักครับ " & inputName)
End If
End Sub
```

 

ถ้า inputName ที่กรอกมาใน Range ที่ชื่อ FirstName เป็นคำว่า ศิระ ก็จะบอกว่า สวัสดีนายท่าน นอกนั้นก็จะบอกว่า ยินดีที่ได้รู้จักครับ แล้วตามด้วยชื่อ

 

สังเกตว่า ใช้ inputName = “ศิระ” ได้ เพราะมันรู้ว่าเครื่องหมาย = อันนี้คือเครื่องหมายเปรียบเทียบ ไม่ใช่ assignment แบบตอนที่เขียนส่งค่าให้ตัวแปรตามปกติ

 ![10](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-14.png) ![11](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-15.png) 

## การ Save ไฟล์

 

ที่สำคัญ เวลาจะ Save ไฟล์ต้อง Save นามสกุล .xlsm, xlsb, xls เท่านั้นนะครับ **เพราะถ้าดันไป save เป็น xlsx ปกติล่ะก็… code ที่เราเขียนจะหายไปหมดเลย** ดังนั้นอย่าพลาดเด็ดขาดเลยนะ เดี๋ยวนั่งร้องไห้ไม่รู้ด้วย!

 ![12](https://www.thepexcel.com/wp-content/uploads/2020/05/vba-basic-03.png) 

## สรุป VBA พื้นฐาน ตอนที่ 1

 

เอาล่ะ บทนี้ของ่ายๆ แค่นี้ก่อนนะครับ ยังไงก็ลองไปเล่นให้ชินมือเข้าไว้นะ ใน[บทต่อไปจะเป็นการอธิบาย Concept สำคัญใน VBA นั่นก็คือเรื่องของ Object นั่นเอง](https://www.thepexcel.com/excel-vba-basic-02-object/) ซึ่งจะเป็นพื้นที่ไปสู่ บทที่ 3 ที่จะพูดถึงเรื่องการวน Loop ซึ่งคือหัวใจที่สำคัญที่สุดของการเขียนโปรแกรมล่ะ

---

_Source: [https://www.thepexcel.com/excel-vba-basic-01/](https://www.thepexcel.com/excel-vba-basic-01/)_
