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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#1
Post
by sooksun2009 » Mon Jul 13, 2020 11:28 am
รบกวนอาจารย์ด้วยครับ ผมต้องการ countaข้อมูลข้าม file ผมใช้มา macro ทำได้แล้ว แต่ชื่อ fileที่countเปลี่ยนไปตามวันที่ ซึงต้องไปแก้ใน code ทุกวัน อยากให้เปลี่ยนชื่อfile ในcell b2กับC2 ได้เลย โดยที่เราไม่ต้องไปแก้ที่codeทุกวัน ขอบคุณครับ
Code: Select all
Sub Macro1()
'' Macro1 Macro
'
'
Sheet2.Range("Q2").Value = _
"=COUNTA('O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1:R100C1)"
End Sub
You do not have the required permissions to view the files attached to this post.
puriwutpokin
Guru
Posts: 3801 Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365
#2
Post
by puriwutpokin » Mon Jul 13, 2020 2:07 pm
ปรับตรงนี้ครับ ครั้งหน้าใส่โค้ดมาในไฟล์ด้วยนะครับ
Code: Select all
Sheet2.Range("Q2").Value = _
"=COUNTA(INDIRECT(""'""&$B$2&""[""&$C$2&""]""&$D$2&""'!A3:A100""))"
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#3
Post
by sooksun2009 » Mon Jul 13, 2020 2:47 pm
puriwutpokin wrote: Mon Jul 13, 2020 2:07 pm
ปรับตรงนี้ครับ ครั้งหน้าใส่โค้ดมาในไฟล์ด้วยนะครับ
Code: Select all
Sheet2.Range("Q2").Value = _
"=COUNTA(INDIRECT(""'""&$B$2&""[""&$C$2&""]""&$D$2&""'!A3:A100""))"
ต้องขอโทษด้วยครับพอดีแยก file โค๊ดเลยไม่ได้ตามมาด้วย
ลองใส่โค๊ดไปแล้วปรากฎว่าถ้าไม่เปิด file ปลายทาง มัน countได้ค่าแค่ 1 จากข้อมูลfile ปลายทางมันเป็น9
puriwutpokin
Guru
Posts: 3801 Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365
#4
Post
by puriwutpokin » Mon Jul 13, 2020 2:49 pm
การอ้างอิงที่ ใช้ Indirect จะต้องเปิดไฟล์ต้นทางนั้นเสมอครับ ไม่เช่นนั้น ควรให้ผลนับนั้นเป็นเพียงค่าไม่ใช่สูตรครับ
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#5
Post
by sooksun2009 » Mon Jul 13, 2020 2:55 pm
puriwutpokin wrote: Mon Jul 13, 2020 2:49 pm
การอ้างอิงที่ ใช้ Indirect จะต้องเปิดไฟล์ต้นทางนั้นเสมอครับ ไม่เช่นนั้น ควรให้ผลนับนั้นเป็นเพียงค่าไม่ใช่สูตรครับ
ขอบคุณครับ
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#6
Post
by sooksun2009 » Wed Jul 22, 2020 9:58 am
สอบถามเพิ่มเติม เวลาไฟล์ปลายทางมีการเพิ่มข้อมูล ไฟล์ต้นทางชอบถามหาว่า "Update values:"ไฟล์ปลายทาง (ไฟล์ปลายทางมี เพิ่มข้อมูลตลอดเวลา)มีวิธีแก้ไหมครับ
puriwutpokin
Guru
Posts: 3801 Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365
#7
Post
by puriwutpokin » Wed Jul 22, 2020 11:00 am
ถ้าเปิดไฟล์ทั้ง 2 แล้ว ถ้า มีการถามสามารถยกเลิกไม่ให้ถามได้ โดยใส่คำสั่ง
ที่ ThisWorkbook ใส่คำสั่ง
ตอนเปิดไฟล์
Code: Select all
Private Sub Workbook_Open()
Application.DisplayAlerts = False
'Other Code....
Application.DisplayAlerts = True
End Sub
หรือจะเลือกจาก POP UP ตามรูปครับเลือกไม่อัพเดตและไม่เตือน หรือ เลือกจะอัพเดตโดยไม่ต้องเตือน ก็ตามรูปครับ
You do not have the required permissions to view the files attached to this post.
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#8
Post
by sooksun2009 » Wed Jul 22, 2020 2:19 pm
ขอบคุณครับ ต้องลองดูก่อน
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#9
Post
by sooksun2009 » Sat Jul 25, 2020 9:57 am
puriwutpokin wrote: Wed Jul 22, 2020 11:00 am
ถ้าเปิดไฟล์ทั้ง 2 แล้ว ถ้า มีการถามสามารถยกเลิกไม่ให้ถามได้ โดยใส่คำสั่ง
ที่ ThisWorkbook ใส่คำสั่ง
ตอนเปิดไฟล์
Code: Select all
Private Sub Workbook_Open()
Application.DisplayAlerts = False
'Other Code....
Application.DisplayAlerts = True
End Sub
หรือจะเลือกจาก POP UP ตามรูปครับเลือกไม่อัพเดตและไม่เตือน หรือ เลือกจะอัพเดตโดยไม่ต้องเตือน ก็ตามรูปครับ
ได้แล้วครับ ขอบคุณครับ
สอบถามเพิ่มเติมครับ code ถ้าไฟล์ที่จะ counta ยังไม่ถูกสร้าง อยากให้แสดง sheet2.range("Q2") เป็น 0 ขอบคุณครับ
Code: Select all
Sub Macro1()
'' Macro1 Macro
'
'
Sheet2.Range("Q2").Value = _
"=COUNTA('O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1:R100C1)"
End Sub
puriwutpokin
Guru
Posts: 3801 Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365
#10
Post
by puriwutpokin » Sat Jul 25, 2020 10:44 am
ใช้ตัวดัก Error ครับ
Code: Select all
Sub Macro1()
'' Macro1 Macro
'
'
Sheet2.Range("Q2").Value = _
"=IFERROR(COUNTA('O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1:R100C1),0)"
End Sub
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#11
Post
by sooksun2009 » Sat Jul 25, 2020 4:14 pm
puriwutpokin wrote: Sat Jul 25, 2020 10:44 am
ใช้ตัวดัก Error ครับ
Code: Select all
Sub Macro1()
'' Macro1 Macro
'
'
Sheet2.Range("Q2").Value = _
"=IFERROR(COUNTA('O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1:R100C1),0)"
End Sub
ขอบคุณครับ
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#12
Post
by sooksun2009 » Fri Jul 31, 2020 3:44 pm
สอบถามเพิ่มเติมครับ ถ้าไม่ต้องการ Counta แต่อยากค่าจากเซลนั้นเลย เช่นอยากได้ค่า sheet Sav1 cell A3
snasui
Site Admin
Posts: 31146 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#13
Post
by snasui » Fri Jul 31, 2020 6:32 pm
Link มาตรง ๆ ก็จะได้แบบนี้ครับ
Code: Select all
Sheet2.Range("Q2").Value = _
"='O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1"
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#14
Post
by sooksun2009 » Mon Aug 17, 2020 11:52 am
snasui wrote: Fri Jul 31, 2020 6:32 pm
Link มาตรง ๆ ก็จะได้แบบนี้ครับ
Code: Select all
Sheet2.Range("Q2").Value = _
"='O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1"
ได้แล้ว ขอบคุณครับ แต่ที่นีติดปัญหาครับ คือเวลาวันเดือนปีเปลี่ยนต้องมาเปลี่ยนที่หน้าต่าง Code ผมอยากให้เปลี่ยนในcell ต้องทำไงครับ
logic
Gold
Posts: 1511 Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365
#15
Post
by logic » Mon Aug 17, 2020 1:05 pm
เขียน path ไว้ในเซลล์แล้วเอามาใช้ในโค้ดก็ได้ครับ
ลองเขียนมาให้เพื่อนสมาชิกช่วยกันดูได้เลย
มาเชียร์ให้ช่วยกันใส่รุ่นเอ็กเซลในโปรไฟล์ ดูใต้โพสต์อาจารย์ครับ
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#16
Post
by sooksun2009 » Mon Aug 17, 2020 1:44 pm
logic wrote: Mon Aug 17, 2020 1:05 pm
เขียน path ไว้ในเซลล์แล้วเอามาใช้ในโค้ดก็ได้ครับ
ลองเขียนมาให้เพื่อนสมาชิกช่วยกันดูได้เลย
มาเชียร์ให้ช่วยกันใส่รุ่นเอ็กเซลในโปรไฟล์ ดูใต้โพสต์อาจารย์ครับ
มีตัวอย่างให้ดูไหมครับ
snasui
Site Admin
Posts: 31146 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#17
Post
by snasui » Mon Aug 17, 2020 7:39 pm
ตัวอย่างก็คล้ายกับที่เขียนมาแล้วครับ เพียงแต่แทนที่จะอ้างข้อความยาว ๆ ใน Code ก็ไปอ้างค่าในเซลล์แทนครับ
กรุณาเพิ่ม Version ของ Excel ใน Profile ด้วย ดูตัวอย่างได้ที่นี่ครับ
viewtopic.php?f=6&p=103177#p103177
sooksun2009
Member
Posts: 172 Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016
#18
Post
by sooksun2009 » Tue Aug 18, 2020 9:12 am
snasui wrote: Mon Aug 17, 2020 7:39 pm
ตัวอย่างก็คล้ายกับที่เขียนมาแล้วครับ เพียงแต่แทนที่จะอ้างข้อความยาว ๆ ใน Code ก็ไปอ้างค่าในเซลล์แทนครับ
กรุณาเพิ่ม Version ของ Excel ใน Profile ด้วย ดูตัวอย่างได้ที่นี่ครับ
viewtopic.php?f=6&p=103177#p103177
แก้ไขแล้วครับ เวอร์ชั่น Excelcแล้วครับ ขอบคุณครับ
snasui
Site Admin
Posts: 31146 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#19
Post
by snasui » Tue Aug 18, 2020 8:13 pm
sooksun2009 wrote: Tue Aug 18, 2020 9:12 am
แก้ไขแล้วครับ เวอร์ชั่น Excelcแล้วครับ ขอบคุณครับ
ขอบคุณครับ
ส่วนคำตอบผมก็ได้ตอบไปแล้วเช่นกันดังข้อความที่ยกมานี้
snasui wrote: Mon Aug 17, 2020 7:39 pm
ตัวอย่างก็คล้ายกับที่เขียนมาแล้วครับ เพียงแต่แทนที่จะอ้างข้อความยาว ๆ ใน Code ก็ไปอ้างค่าในเซลล์แทนครับ
ลองปรับมาเองก่อน ติดแล้วค่อยถามกันต่อครับ