macro to copy 3 sheets to sheet1 & sort

25 ม.ค.55 มีโอกาสเขียน macro ใน excel คัดลอกข้อมูลจาก 3 sheets มาต่อกัน แล้วก็จัดเรียงตามวันที่ ซึ่งอยู่ใน column b และ ยังไม่ได้ปรับ code ให้เป็น function ครับ ทำให้ code ค่อนข้างยาว แต่ผมว่าอ่านง่าย ตรงไปตรงมาดี

Sub copy_sheets()
Dim start As String, tr As Integer
start = “a3” ‘ start row 3
tr = 0
‘=========
ActiveWorkbook.Worksheets(“¡”).Select
Set tbl = Range(start).CurrentRegion
tbl.Offset(2, 0).Resize(tbl.Rows.Count – 2, tbl.Columns.Count).Copy
tr = tr + tbl.Rows.Count
Range(start).CurrentRegion.Copy
ActiveWorkbook.Worksheets(“sheet1”).Select
Range(“a1”).Activate
ActiveSheet.Paste
‘=========
ActiveWorkbook.Worksheets(“¢”).Select
Set tbl = Range(start).CurrentRegion
tbl.Offset(2, 0).Resize(tbl.Rows.Count – 2, tbl.Columns.Count).Copy
tr = tr + tbl.Rows.Count
ActiveWorkbook.Worksheets(“sheet1”).Select
Range(“a13”).Activate
ActiveSheet.Paste
‘=========
ActiveWorkbook.Worksheets(“¤”).Select
Set tbl = Range(start).CurrentRegion
tbl.Offset(2, 0).Resize(tbl.Rows.Count – 2, tbl.Columns.Count).Copy
tr = tr + tbl.Rows.Count
ActiveWorkbook.Worksheets(“sheet1”).Select
Range(“a23”).Activate
ActiveSheet.Paste
‘=========
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add Key:=Range(“B3:B” & tr) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(“Sheet1”).Sort
.SetRange Range(“A3:L” & tr)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

เขียน vbs ใน macro แปลงระหว่างเลขไทยและเลขอาราบิก

แปลงเลขไทยเป็นเลขอาราบิก

5 มี.ค.53 ทุกองค์กรย่อมมีนโยบายมากมายทั้งที่เป็นลายลักษณ์อักษร และไม่เป็น เป็นทางการหรือไม่เป็นทางการ ช่วงนี้มีแนวนโยบายที่ไม่เป็นลายลักษณ์อักษรและไม่เป็นทางการเกิดขึ้นในองค์กรแห่งหนึ่ง คือ การใช้ตัวเลขในเอกสารขององค์กร ซึ่งก่อนหน้านี้มีวัฒนธรรมที่ผู้บริหารสนับสนุนให้ใช้เลขไทย ทำให้มีการใช้เลขไทยในเอกสารเป็นไปโดยอัตโนมัติ เมื่อเวลาผ่านไปแล้วมีการเปลี่ยนทีมผู้บริหารก็ย่อมมีการเปลี่ยนแปลงในหลายเรื่อง ทำให้การเลือกใช้แบบของตัวเลขเริ่มเปลี่ยนทิศทางไป การใช้ visual basic script ใน macro ของ microsoft word ที่เขียนขึ้น 2 ฟังก์ชันคือ แบบแปลงไทยเป็นเลขอาราบิก และ เลขอาราบิกเป็นเลขไทย ทำให้การสั่งเปลี่ยนทำได้ง่าย ทดสอบกับ word2003 แล้วใช้ได้ครับ .. ลองนำไปทดสอบดูได้นะครับ

Sub arabictothai()
For i = 0 To 9
With Selection.Find
.Text = Chr(48 + i)
.Replacement.Text = Chr(240 + i)
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
End Sub

Sub thaitoarabic()
For i = 0 To 9
With Selection.Find
.Text = Chr(240 + i)
.Replacement.Text = Chr(48 + i)
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
End Sub

ถ้าเป็น excel ไม่ต้องใช้ function ให้กด Ctrl-A แล้วกำหนด format ของ cell ใน Number,  Custom เป็น [$-D07041E]0 ก็จะทำให้ข้อมูลที่เป็นตัวเลขทั้งหมดเป็นเลขไทย

สาธิต : http://www.youtube.com/watch?v=JNy15bLnt9k