snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Column ด้านซ้ายสุดจะเป็นวันที่ซึ่งถูกเรียงไว้ตั้งแต่วันที่ 1/1/2015 จนถึง 31/12/15 และ Column ด้านขวาของแต่ละวันที่จะประกอบด้วยข้อมูลต่างๆที่ถูกเรียกขึ้นมาจาก database ด้วยสูตรที่กำหนดไว้ไล่เรียงกันไปด้วยหลายๆข้อมูลครับ ซึ่งผมจะต้องมีการ update ข้อมูลเสมอด้วยการ cal sheet เมื่อวันที่เปลี่ยนไปเพื่อดึงข้อมุลเข้ามาใน excel sheet แต่ทั้งนี้ปัญหาที่เกิดขึ้นคือมันจะ cal ช้ามาก ถ้าช่องที่เคยถุกเรียกข้อมุลแล้วยังคงคำสั่งไว้ซึ่งสูตรในการดึงข้อมุลออกมาจาก database ดังนั้นผมจึงแก้ปัญหาด้วยการ copy and paste by value ครับ แต่จะต้องทำด้วยการ manual ทั้งนี้ผมต้องการที่จะทำคำสั่งพวกนี้ลงไปใน VBA command botton ครับ
ด้วยการออกคำสั่งว่าถ้าวันนี้เป็นวันอะไร ให้ออกคำสั่งวันก่อนหน้าด้วยการ copy and paste by value ที่ช่อง cell เดิมทั้งหมด
หรือถ้าจะสามารถทำได้ ให้ออกคำสั่งว่า ถ้าวันนี้เป็นวันอะไร ให้ตรวจสอบวันก่อนหน้า ช่องข้อมูลไหนยังเป็น formula link ให้ทำการ copy and paste by value ทั้งหมด
ซึ่ง ณ ตอนนี้ผมลองเขียนแบบ basic ได้ดังนี้
Private Sub CommandButton1_Click()
With Sheets("XXX").Range("B27:EB27").Copy
End With
Sheets("XXXI").Range("B27:EB27").PasteSpecial xlPasteValues
With Sheets("YYY").Range("B27:EB27").Copy
End With
Sheets("YYY").Range("B27:EB27").PasteSpecial xlPasteValues
End Sub
Code ข้างต้นทำได้แค่เพียงการ copy sheet สองหน้าที่ผมกำหนดไว้ ใน cell ที่ผมกำหนดไว้ ให้มันทำ copy paste by value เท่านั้นครับ
Private Sub CommandButton1_Click()
Sheets("Sheet2").Range("D" & Range("B1").Value).Resize(Range("C1").Value, 7) = Sheets("Sheet2").Range("D" & Range("B1").Value).Resize(Range("C1").Value, 7).Value
End Sub
ทำได้แล้วครับอาจารย์ ติดปัญหาเดียว มันดันไปออกคำสั่ง ให้ทำเป็น value จากช่องที่กำหนดลงมาด้านล่าง แล้วออกด้านขวา