snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#21
Post
by March201711 » Wed Apr 25, 2018 9:58 pm
ดู วีดีโอแล้วก็ยังไม่เช้าใจค่ะอาจารย์ ยากจังค่ะ ยังไม่เคยเขียน code vba จริงๆจังๆ ส่วนใหญ่แค่ record marco เท่านี้นเองค่ะ
snasui
Site Admin
Posts: 30988 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#22
Post
by snasui » Wed Apr 25, 2018 10:31 pm
คงต้องศึกษามาก่อนตามลำดับ อาจจะเริ่มด้วยหนังสือ ส่วนจะเป็นหนังสือเล่มใดคงต้องเข้าไปลองอ่านด้วยตนเอง เล่มไหนอ่านแล้วเข้าใจค่อยซื้อเล่มนั้นครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#23
Post
by March201711 » Thu Apr 26, 2018 6:22 am
ถ้าไม่เขียน code vba สามารถใช้สูตรได้ไหมคะ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#24
Post
by March201711 » Thu Apr 26, 2018 3:41 pm
ลองเขียน code ที่ศึกษามาแล้วใช้ Do unit...loop ค่ะ แต่ก็ไม่แน่ใจว่าได้หรือเปล่าค่ะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30988 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#25
Post
by snasui » Thu Apr 26, 2018 7:47 pm
ค่อย ๆ ถามตอบกันไปครับ
Code ที่เขียนมาต้องการจะทำอะไรบ้าง ติดขัดตรงส่วนใดครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#26
Post
by March201711 » Thu Apr 26, 2018 8:19 pm
ติดตรงถ้าเป็นวันหยุดพิเศษ เช่น วันหยุดยาวๆ อยากให้ดึงข้อมูลจากfile Base_WD sheet WorkingDay เช่นวันที่ 1พค18 เป็นวันแรงงาน จะข้ามวันที่ 01/05/18 ไปเลยจะไม่เห็นวันที่วันนั้น (ดูได้ตรง column a19 ถึง a20 จะไม่มีวันนั้นจะเป็นวันที่02/05/18 แทน อยากให้ดึงข้อมูลตรงชีทนี้ค่ะ อย่างอื่นได้หมดแล้วแต่ติดตรงวันที่ที่หยุดพิเศษค่ะ
snasui
Site Admin
Posts: 30988 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#27
Post
by snasui » Thu Apr 26, 2018 8:25 pm
นำ Code มาอธิบายประกอบว่าติดตรงไหน
ผมพบว่า Code กับสิ่งสิ่งอธิบายมานี้ไม่ได้เป็นไปในทางเดียวกัน การจะใช้ Code จะต้องเข้าใจและเขียนได้เองบ้างครับ
Code ที่เขียนจะต้องเขียนเพื่อแก้ไขปัญหาที่ถาม ไม่ใช่นำ Code อื่นที่ไม่เกี่ยวข้องหรือทำงานอื่นไม่เกียวกับงานนี้มาถาม
ลองพยายามใหม่ครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#28
Post
by March201711 » Thu Apr 26, 2018 8:37 pm
คือหนูดูที่อาจารย์ให้คลิปมาดูแล้วลองปรับประยุกต์ใช้ค่ะ ต้องใช้ do unit ...loop เพื่อหาค่าที่มีอยู่ ถ้าเป็นค่าว่างก็ให้วนลูปไปเรื่อยๆจนกว่าจะเจอค่าของวันนี้ค่ะ
snasui
Site Admin
Posts: 30988 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#29
Post
by snasui » Thu Apr 26, 2018 8:45 pm
ใช้การ Loop ไม่ตรงกับตำแหน่งที่ควร Loop ครับ
Code: Select all
k = 2
Do Until Workbooks("Base_WD.xlsx").Worksheets("WorkingDay").Cells(k, 7).Value <> ""
k = k + 1
Loop
กรุณาตอบว่า Code นี้ว่าเป็นการ Loop ข้อมูลในเซลล์ใด ให้ระบุตำแหน่งเซลล์ เช่น A1, A2, Z10 สังเกตตรงไหนว่าเป็นเซลล์นั้นครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#30
Post
by March201711 » Thu Apr 26, 2018 9:16 pm
k = 2
Do Until Workbooks("Base_WD.xlsx").Worksheets("WorkingDay").Cells(k, 7).Value <> ""
k = k + 1
Loop
cell ที่ 2 column ที่ 7 ค่ะ ถ้าเป็นค่าว่างก้อให้วนไปเรื่อยๆจนเจอ cell ที่ไม่เป็นค่าว่างค่ะ คือ วันที่ 26/4/18ค่ะ
snasui
Site Admin
Posts: 30988 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#31
Post
by snasui » Thu Apr 26, 2018 9:24 pm
เมื่อเจอแล้วให้นำค่านั้นหักออกด้วย 1 เพื่อให้เป็นตำแหน่งเซลล์ก่อนหน้า จะนำค่าในเซลล์ไปใช้ต่อครับ
Code: Select all
Dim l as Long
k = 2
Do Until Workbooks("Base_WD.xlsx").Worksheets("WorkingDay").Cells(k, 7).Value <> ""
k = k + 1
Loop
l = Workbooks("Base_WD.xlsx").Worksheets("WorkingDay").Cells(k-1, 1).Value2
จากนั้นนำค่า l ไปใช้ต่อครับ ช่วยโพสต์ Code ให้แสดงเป็น Code จะได้แตกต่างจากข้อความทั่วไป สะดวกแก่การอ่านครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#32
Post
by March201711 » Thu Apr 26, 2018 9:33 pm
ขอบคุณค่ะ จะลองำปปรับใช้ดู ได้ไม่ได้จะแจ้งให้ทราบนะคะอาจารย์
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#33
Post
by March201711 » Thu Apr 26, 2018 10:08 pm
ลองทำแล้วไม่ได้น่ะค่ะอาจารย์
Code: Select all
Dim l As Long
k = 2
Do Until Workbooks("Base_WD.xlsx").Worksheets("WorkingDay").Cells(k, 7).Value <> ""
k = k + 1
Loop
l = Workbooks("Base_WD.xlsx").Worksheets("WorkingDay").Cells(k - 1, 1).Value2
Dim ie As Object, s As String, i As Integer
Select Case Weekday(Date, vbMonday)
Case 7
i = -2
Case 1
i = -3
Case Else
i = -1
End Select
s = Format(DateAdd("d", i, Date), "ddmmyyyy")
Set ie = CreateObject("Internetexplorer.Application")
ie.Visible = True
ie.navigate "https://www.bot.or.th/thai/statistics/financialmarkets/exchangerate/exchangerate_EN_PDF/ER_PDF_" & l & ".PDF"
MsgBox " finished "
End Sub
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30988 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#34
Post
by snasui » Thu Apr 26, 2018 10:48 pm
ช่วยอธิบายลักษณะที่ว่า "ไม่ได้" ว่าเป็นอย่างไรมาด้วยครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#35
Post
by March201711 » Fri Apr 27, 2018 7:55 am
ติดตรง เปิด BrowerBOT แล้วหน้าต่างไม่มี exchange rate ค่ะ
Code: Select all
ie.navigate "https://www.bot.or.th/thai/statistics/financialmarkets/exchangerate/exchangerate_EN_PDF/ER_PDF_" & l & ".PDF"
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30988 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#36
Post
by snasui » Fri Apr 27, 2018 7:12 pm
ตัวอย่างการปรับ Code ครับ
Code: Select all
ie.navigate "https://www.bot.or.th/thai/statistics/financialmarkets/exchangerate/exchangerate_EN_PDF/ER_PDF_" & Format(l, "ddmmyyyy") & ".PDF"
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#37
Post
by March201711 » Fri Apr 27, 2018 9:01 pm
อาจารย์คะ ทำไมพอใช้ code vba แล้ว พอdave file ทำให้file เพิ่มมากขึ้น จาก้ดิม 2Mb พอใช้ code vba หรือmarco fileเพิ่มขึ้นเป็น 7Mb เลยค่ะ
snasui
Site Admin
Posts: 30988 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#38
Post
by snasui » Fri Apr 27, 2018 9:05 pm
เพิ่ม Code แค่ไม่กี่บรรทัดย่อมไม่ทำให้ไฟล์ใหญ่ ยกเว้นว่าเขียน Code ให้บันทึกข้อมูลลงในไฟล์หรือสร้าง Object จำนวนมากจึงจะทำให้ไฟล์มีขนาดใหญ่ขึ้นมากครับ
snasui
Site Admin
Posts: 30988 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#40
Post
by snasui » Fri Apr 27, 2018 9:24 pm
จะบอกได้ว่าปรับตรงไหน อย่างไรก็ต้องทราบว่า Code ทำงานอะไรอย่างไรเสียก่อนครับ