:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

run marco แล้วติดdebug วันที่

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

run marco แล้วติดdebug วันที่

#1

Post by March201711 »

เกิดปัญหาเวลา run marco แล้วเกิด sheet ที่เป็น วัน-เดือน-ปี ค่ะ แต่file ที่ชื่อว่า Source_otherได้ข้อมูลจากแหล่งอื่น บางวันคนที่ตั้งชื่อ sheet ใหม่ จะตั้ง "18-02-2020" (ไม่มีเคาะวรรค) บางวันก็ตั้งเป็น "19-02-2020 " (มีเคาะวรรคเพิ่มเข้ามา) อย่างนี้ต้องปรับใน code อย่างไร

ติด debug ตรงนี้ค่ะ

Code: Select all

Sheets(Format(Right(Range("A1").Value, 10), "dd-mm-yyyy")).Select 
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: run marco แล้วติดdebug วันที่

#2

Post by snasui »

:D เปลี่ยนชื่อชีตให้เป็นชื่อที่ต้องการเสียก่อน ตัวอย่างตาม Code ด้านล่างครับ

Code: Select all

'Other code
    Windows("Source_other.xlsx").Activate
    ActiveSheet.Name = Format(Right(Range("A1").Value, 10), "dd-mm-yyyy")
    Sheets(Format(Right(Range("A1").Value, 10), "dd-mm-yyyy")).Select
    'Or
    'Activesheet.Select
    Range("B3:C9").Select
'Other code
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: run marco แล้วติดdebug วันที่

#3

Post by March201711 »

ถ้าวันนี้ทำของวันที่ 20/2/20

ถ้าสมมุติคนที่ส่งไฟล์มา เค้าตั้งชื่อsheet วันที่ไว้ล่วงหน้า เช่น 21-02-2020 และมีชื่อsheetวันก่อนๆหน้านั้น
หรือถ้าเค้า save sheetของวันก่อน เช่น 17-02-2020 ซึ่งไม่ตรงวันปัจจุบันที่หน้า file Main_sum cell A1 อย่างนี้ต้องปรับแก้อย่างไรค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: run marco แล้วติดdebug วันที่

#4

Post by snasui »

:D ถ้ามีชีตก่อนหน้าก็ต้อง Loop ไปทุกชีตแก้ให้ตรงกับวันที่ใน A1 ถ้าไม่มีวันที่ก็ไม่ต้องแก้ชีตนั้น ๆ ถ้าข้อมูลไม่ถูกต้องก็ถือเป็นความรับผิดชอบของผู้ที่ส่งข้อมูลมา จะต้องรับไปแก้ไข ไม่แก้ไขครั้งนี้ก็ต้องแก้ไขในครั้งถัดไป เช่นนี้เป็นต้นครับ

การทำงานจะต้องมีลำดับขั้นตอนที่ตกลงกันล่วงหน้าเอาไว้ก่อนว่าต้องทำเช่นนั้น เช่นนี้ ไม่ควรพยายามหาทางแก้ด้วย Code ไปทุกเรื่อง เพราะมันมีโอกาสที่จะเป็นไปได้มากมาย เอาไว้เขียน VBA ให้คล่องเสียก่อนจะทำให้พิศดารแค่ไหนก็ได้ครับ
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: run marco แล้วติดdebug วันที่

#5

Post by March201711 »

บอกไปบ้างแล้ว เค้าไม่ยอมทำน่ะค่ะ ต้องมานั่งแก้debug เองทุกครั้งไป
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: run marco แล้วติดdebug วันที่

#6

Post by snasui »

:D ก็ต้องคุยในระดับที่สูงขึ้นไปหรือไม่ก็แก้ไขเองไปเรื่อย ๆ ครับ
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: run marco แล้วติดdebug วันที่

#7

Post by March201711 »

ถ้าเลือกวันที่ของ file Main_sum = sheet source_other ต้องเขียนอย่างไรค่ะ
User avatar
logic
Gold
Gold
Posts: 1511
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: run marco แล้วติดdebug วันที่

#8

Post by logic »

March201711 wrote: Fri Feb 21, 2020 8:17 am ถ้าเลือกวันที่ของ file Main_sum = sheet source_other ต้องเขียนอย่างไรค่ะ
คือยังไงนะครับ จะเขียนอะไรแบบไหน ช่วยเล่าขั้นตอนแบบ 1,2,3 มาหน่อย อ่านแล้วงงครับ 😑
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: run marco แล้วติดdebug วันที่

#9

Post by March201711 »

ถ้าวันนี้ทำของวันที่ 20/2/20 ซึ่งตรงกับ cell A1 ที่ file "Main_sum"
แล้วไฟล์ที่ชื่อ "Source_other" save ไว้ที่ sheet "17-02-2020" อยากให้ click run แล้วให้ marco เลือก sheet "20_02-2020" เลยค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: run marco แล้วติดdebug วันที่

#10

Post by snasui »

:D ทำได้ด้วยการ Loop ไปเช็คเซลล์ A1 ของทุกชีตครับ

ตัวอย่าง

Code: Select all

Dim strd As String
strd = Application.Text(Date, "dd\_mm-yyyy")
For Each sh In Worksheets
    If VBA.Right(sh.Range("a1").Value, 10) = strd Then sh.Select
Next sh
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: run marco แล้วติดdebug วันที่

#11

Post by March201711 »

ปรับแล้วได้ยอดเป็นของวันที่ 21-02-2020
อยากให้ดึงของวันที่ 20-02-2020ตาม cell a1 ค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: run marco แล้วติดdebug วันที่

#12

Post by snasui »

:D โปรแกรมจะทราบได้อย่างไรว่าเรากำลังต้องการดึงข้อมูลของวันไหน มีเกณฑ์ใดให้พิจารณาครับ :?:
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: run marco แล้วติดdebug วันที่

#13

Post by March201711 »

ดูได้จากFile : Main_sum ที่ cell A1 คะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31255
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: run marco แล้วติดdebug วันที่

#14

Post by snasui »

:D ที่จริงปัญหานี้ไม่ได้มีความยุ่งยาก แต่คุณ March201711 อธิบายสิ่งที่ต้องการมาไม่ชัดเจนครับ

ตัวอย่างการอธิบายสำหรับปัญหานี้คือ

ให้ค้นหาชีตในไฟล์ Sorece_other.xlsx ที่มีชื่อตรงกับค่าวันที่ใน A1 ของชีต Main ของไฟล์ Main_sum.xlsm

การค้นหาลักษณะนี้จะต้องใช้ VBA เพราะต้อง Loop ไม่สามารถทำด้วย Macro เหมือนที่บันทึกมาถามกันได้ การใช้งาน VBA จำเป็นต้องศึกษาเพิ่มเติม ต้องฝึกฝนอีกมาก ควรเริ่มต้นจากการทำตามหนังสือเพราะว่าได้ลำดับสิ่งที่ควรทราบเอาไว้ให้เรียบร้อยแล้ว

การใช้ Macro จะทำงานนี้ได้เมื่อชื่อชีตมีการคีย์มาอย่างถูกต้อง ไม่ใช่วรรคหน้า หลัง วรรคกลาง ซึ่งผมก็ได้บอกไปแล้วในโพสต์ก่อน ๆ ว่าให้ดำเนินการอย่างไร ในครั้งถัดไป ถ้าต้อง Loop ลักษณะนี้อีก ผมจะให้เขียนมาเองก่อน เพราะเป็นสิ่งจำเป็นที่จะต้องทราบและทำเป็นมาก่อนบ้างครับ

่ตัวอย่างการปรับ Code ครับ

Code: Select all

Dim wb As Workbook
Dim strd As String
Set wb = Workbooks("Source_other.xlsx")
With ThisWorkbook.Worksheets("Main").Range("a1")
    strd = VBA.Replace(VBA.Right(.Value, 10), "/", "-")
End With
For Each sh In wb.Worksheets
    If VBA.Left(sh.Name, 10) = strd Then
        wb.Activate
        sh.Select
        Exit For
    End If
Next sh
Range("B3:C9").Select
Selection.Copy
Windows("Main_sum.xlsm").Activate
Range("B3").Select
ActiveSheet.Paste
Range("F3").Select
March201711
Gold
Gold
Posts: 1047
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: run marco แล้วติดdebug วันที่

#15

Post by March201711 »

:D ค่ะ ขอบคุณที่อาจารย์แนะนำค่ะ จะไปปรับปรุงในครั้งต่อไปค่ะ
Post Reply