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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)snasui wrote:กรณีที่ Model แต่ละค่าต้องไม่เหมือนกับที่เคยบันทึกลงใน AllData แล้ว สามารถใช้ Validation มาดักตอนที่กรอกข้อมูลได้ครับ โดย
คลุมข้อมูลที่ B4:B12 > เข้าเมนู Data > Validation > ช่อง Allow เลือก Custom > ช่อง Formula คีย์ =COUNTIF(INDIRECT("Alldata!A:A"),$B14)=0
หากมีค่าในชีท AllData แล้วจะไม่สามารถคีย์ได้ครับ
Code: Select all
Sub ClearEntries()
On Error GoTo noName 'error handler (การจัดการกับ Error)
'you can use the word "numbers" or any other range name in the next line
'(ท่านสามารถใช้คำว่า "numbers" หรือช่วงเซลล์อื่น ๆ ในบรรทัดถัดไป)
Application.Goto Reference:="ClearData" 'ไปยังข้อมูลที่ชื่อ ClearData
Selection.ClearContents ' ทำการ Clear เฉพาะค่าภายในตำแหน่งที่เลือก
Range("B3:B10").Select 'เลือกช่วงเซลล์ B3:B10
Exit Sub 'ออกจากการ Run code
noName: 'only fires on an error (กรณีไฟล์เกิดค่าผิดพลาดเท่านั้น)
MsgBox "The named range you are calling does not exist." & vbCr & _
You need to name a range as 'numbers' before proceeding., _
vbOKOnly + vbInformation, "Named range required" 'แสดงข้อความเตือนว่า
' "The named range you are calling does not exist."
' "You need to name a range as 'numbers' before proceeding."
End Sub
Code: Select all
Sub ClearEntries()
On Error GoTo noName
Application.Goto Reference:="ClearData"
Range("B3:B10").ClearContents
Exit Sub
noName:
MsgBox "The named range you are calling does not exist." & vbCr & _
"You need to name a range as 'numbers' before proceeding.", _
vbOKOnly + vbInformation, "Named range required"
End Sub
snasui wrote:จำเป็นหรือไม่อยู่ที่ว่าต้องการให้ผู้ใช้งานทำอะไรต่อครับ
ปกติการเลือก A1 เพราะว่าส่วนใหญ่จะสร้าง Form หรือพื้นที่การทำงานให้เริ่มจากมุมซ้ายบนของ Worksheet ต่าง ๆ เสมอ เมื่อทำงานตามคำสั่งด้วย VBA แล้วก็กำหนดให้เลือก A1 เอาไว้เพื่อพร้อมสำหรับเริ่มงานในรอบต่อไปได้เลย
ทั้งนี้เนื่องจากการทำงานตาม Code อื่น ๆ Cursor จะย้ายไปที่อื่นตามคำสั่งต่าง ๆ เมื่อต้องการให้เริ่มใหม่ก็ระบุให้มาเลือก A1
แต่สำหรับ Code ที่ส่งมาถามนี้ ไม่จำเป็นต้องเลือก A1 เพราะเลือกแล้วก็ไม่ได้ทำอะไรกับ A1 แต่อย่างใด สามารถใส่เครื่องหมาย ' เพื่อให้เป็น Comment แล้วทดสอบ Run Code เพื่อดูผลได้ครับ
ลองเปลี่ยนไปคลุมที่ B14:B22 แล้วทำตามขั้นตอนที่อาจารย์แนะนำนะครับsnasui wrote:กรณีที่ Model แต่ละค่าต้องไม่เหมือนกับที่เคยบันทึกลงใน AllData แล้ว สามารถใช้ Validation มาดักตอนที่กรอกข้อมูลได้ครับ โดย
คลุมข้อมูลที่ B4:B12 > เข้าเมนู Data > Validation > ช่อง Allow เลือก Custom > ช่อง Formula คีย์ =COUNTIF(INDIRECT("Alldata!A:A"),$B14)=0
Code: Select all
Sub CopyToAllData()
Application.Goto Reference:="AddModel"
Selection.Copy
Application.Goto Reference:="AllData"
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Sheets("Report").Select
Range("B14:G27").Select
Selection.ClearContents
Range("B14").Select
Application.ScreenUpdating = True
End Sub