EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.OnKey "{END}", "RecordData"
End Sub
Code: Select all
Application.OnKey "{F10}", "MainCode"
Application.OnKey "{End}", "ArFormClose"
Code: Select all
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If (Target.Address = "$B$1" Or Target.Address = "$D$1" Or _
Target.Address = "$G$4" Or Target.Address = "$G$5" Or Target.Address = "$G$6" Or _
Target.Address = "$G$7" Or Target.Address = "$G$8" Or Target.Address = "$G$9" Or Target.Address = "$G$10") Then
With ActiveSheet.Calendar1
.Visible = True
.Top = ActiveCell.Offset(0, 0).Top
.Left = ActiveCell.Offset(0, 1).Left
End With
Else
ActiveSheet.Calendar1.Visible = False
Application.OnKey "{F10}", "MainCode" ' กำหนดให้ " บันทึกข้อมูล "โดยกดแป้นคีย์บอร์ดตามในวงเล็บปีกกา"{?}
Application.OnKey "{End}", "ArFormClose" ' กำหนดให้ " ปิดฟอร์ม"
End If
Application.EnableEvents = True
End Sub
Code: Select all
If MsgBox("Are you sure that you want to Copy this workbook ? Please Confirm") Then
Exit Sub
End If
Code: Select all
Sub SArBookShare()
Dim formBook As Workbook
Dim dtShare As Workbook
Dim mr As Range
Set formBook = ThisWorkbook
Set dtShare = Workbooks("สมุดงาน1.xlsx")
Set mr = dtShare.Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
With formBook.Sheets("TemBilling")
.Range("A2:W2").Resize(.Range("X1")).Copy
dtShare.Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp) _
.Offset(1, 0).PasteSpecial xlPasteValues
If MsgBox("Are you sure that you want to Copy this workbook ? Please Confirm") Then
Exit Sub
End If
End With
dtShare.Save
End Sub
Code: Select all
Sub MainCode()
Dim response As Boolean
response = MsgBox("Are you sure that you want to Copy this workbook ? Please Confirm", vbYesNo)
If response = vbYes Then
Application.ScreenUpdating = False
Call SArBookShare
Call BeenArL
Application.ScreenUpdating = True
End If
End Sub
อาจารย์คะ ไม่ทราบว่านำ Code ที่อาจารย์ให้มาใช้ผิดขั้นตอนหรือไม่ค่ะ เมื่อรันโปรแกรมแล้วได้ Message Box ตามรูปแนบนี้ค่ะ และเมื่อกดปุ่ม Yes หรือ No ไม่แสดงผลใดๆเลยค่ะsnasui wrote: ตัวอย่าง Code ตามด้านล่างครับCode: Select all
Sub MainCode() Dim response As Boolean response = MsgBox("Are you sure that you want to Copy this workbook ? Please Confirm", vbYesNo) If response = vbYes Then Application.ScreenUpdating = False Call SArBookShare Call BeenArL Application.ScreenUpdating = True End If End Sub
อาจารย์คะ อีกคำถามค่ะ SendKeys เขียนตามนี้ต้องถูกต้องไหมคะsuka wrote:ความต้องการคือเมื่อกด F10 ที่แป้นคีย์บอร์ดหนึ่งครั้งให้ Copy ข้อมูลไปวางที่สมุดงาน1 ชีท Sheet1 หากเผลอกด F10 ที่แป้นคีย์บอร์ดซ้ำให้โปรแกรมขึ้น Message Box เตือนต้องการ Code ซ้ำหรือไม่ค่ะ
Code: Select all
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "{End}"
End Sub
Dim response As Boolean
เป็น Dim response As Integer
ผมคิดว่าผมได้ตอบกรณีเช่นนี้ไปหลายครั้งว่า ด้วยการเขียนโปรแกรมย่อมสามารถทำได้แทบจะไร้ขีดจำกัด หากเขียนดักได้ก็ย่อมป้องกันการบันทึกการซ้ำได้ มันเป็นเหตุเป็นผลกันอยู่แล้วครับsuka wrote:เขียนดักโดยให้โปรแกรมเช็ดจากเลขที่บันทึกให้โปรแกรมรู้ว่าหมายเลขนั้นได้บันทึกแล้วแจ้งเตือนว่ามีการบันทึกซ้ำได้ไหมคะ
Code: Select all
Sub MainCode()
Dim response As Integer
Dim wb As Workbook
Set wbShare = Workbooks("สมุดงาน1.xlsx")
With wbShare.Sheets("Sheet1")
i = Application.Match(r, .Range("B:B"), 0)
If .Range("X" & i) = "Y" Then
response = MsgBox("Are you sure that you want to Copy this workbook ? Please Confirm", vbYesNo)
If response = vbYes Then
Application.ScreenUpdating = False
Call SArBookShare
Call BeenArL
Application.ScreenUpdating = True
Exit Sub
End If
End If
End With
End Sub
Option Explicit
จะต้องประกาศตัวแปรเสมอครับCode: Select all
Sub MainCode()
Dim response As Integer
Dim i As Integer
Dim r As Range
Dim wbShare As Workbook
Dim wbShare As Workbook
Dim wb As Workbook
Set formBook = ThisWorkbook
Set wbShare = Workbooks("สมุดงาน1.xlsx")
Set r = formBook.Sheets("Form").Range("N2")
With wbShare.Sheets("Sheet1")
i = Application.Match(r, .Range("B:B"), 0)
If .Range("X" & i) = "Y" Then
response = MsgBox("Are you sure that you want to Copy this workbook ? Please Confirm", vbYesNo)
If response = vbYes Then
Application.ScreenUpdating = False
Call SArBookShare
Call BeenArL
Application.ScreenUpdating = True
Exit Sub
End If
End If
End With
formBook.Sheets("Form").Range("N2").Copy
wdShare.Sheets("Sheet1").Range("X" & i) = "Y"
End Sub