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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
P1649
Member
Posts: 85 Joined: Sat Feb 09, 2013 6:37 pm
#1
Post
by P1649 » Sun May 26, 2013 2:10 pm
1). key1:=Sheets("Sample").Range("A1:A15"), order1:=xlAscending, _ทำงานปกติ แต่ไม่ทำงานเมื่อแทนค่าด้วย xlDecending
2). ไม่ต้องการให้บันทึกเงื่อนไขของ Condition Formatting ที่จะเพิ่มขึ้นทุกครั้งที่ refeash
3). ต้องการเพิ่มเสียงให้ดังมากกว่า 1 ครั้ง
ขอรบกวนอาจารย์ช่วยแนะนำด้วยครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30801 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#2
Post
by snasui » Sun May 26, 2013 2:27 pm
คำว่า
xlDecending
เขียนไม่ถูกต้องครับ ที่ถูกคือ
xlDescending
ส่วนกรณีที่ต้องการให้ Format ขยายตามปริมาณข้อมูล ลองปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Sub Col_Scale()
'Other code
Range("f1", Range("f" & Rows.Count).End(xlUp)).Select
'Other code
Range("g1", Range("g" & Rows.Count).End(xlUp)).Select
'Other code
End Sub
สำหรับ Sound ลองทดสอบ Code ตามด้านล่างครับ
Code: Select all
Sub Sound()
Dim i As Byte
For i = 1 To 5
x = PlaySound("c:\windows\media\chord.wav", 0, 2)
Application.Wait Now + TimeValue("0:00:01")
Next i
End Sub
P1649
Member
Posts: 85 Joined: Sat Feb 09, 2013 6:37 pm
#3
Post
by P1649 » Sun May 26, 2013 3:49 pm
1. OK
2. OK
3. มีเสียง 1 ครั้งแต่ใช้งานได้ก็ OK
4. Shortcut X = run macro / stop macro โดยไม่ต้องเปิด/ปิด ไฟล์ ทำได้อย่างไรครับ
5. ปิดไฟล์โดยไม่สนใจคำถามว่า บันทึกไฟล์แก้ไขก่อนหรือไม่ ทำได้อย่างไรครับ
snasui
Site Admin
Posts: 30801 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#4
Post
by snasui » Sun May 26, 2013 4:26 pm
ข้อ 4 หากเป็น Macro ที่เขียนใน Module ปกติสามารถเข้าไป Run โดยกดแป้น Alt+F8 ครับ
ส่วนการปิดไฟล์แบบไม่ให้ถามว่าต้องการ Save หรือไม่สามารถเขียนได้ตามด้านล่างครับ
Code: Select all
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime nTime, "Counter", , False
ThisWorkbook.Close False
End Sub
P1649
Member
Posts: 85 Joined: Sat Feb 09, 2013 6:37 pm
#5
Post
by P1649 » Sun May 26, 2013 5:44 pm
snasui wrote: ส่วนกรณีที่ต้องการให้ Format ขยายตามปริมาณข้อมูล ลองปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Sub Col_Scale()
'Other code
Range("f1", Range("f" & Rows.Count).End(xlUp)).Select
'Other code
Range("g1", Range("g" & Rows.Count).End(xlUp)).Select
'Other code
End Sub
3). Sound ใช้งานได้ตามจำนวนที่ต้องการแล้วครับ
2). Format ขยายตามปริมาณข้อมูลใช้ได้ดี แต่เมื่อเข้าไปดูใน Conditional Formatting แล้วพบว่ามีคำสั่งที่เหมือนกันซ้อนกัน จำนวนตามลูปที่ทำงานและจะมากขึ้นไปเรื่อยๆ ตามตัวอย่างแนบ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30801 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#6
Post
by snasui » Sun May 26, 2013 5:48 pm
ลองใช้ Code ลบ Condition Formatting ทิ้งไปก่อนแล้วสร้างใหม่ ควรปรับเองมาก่อน ติดแล้วค่อยถามกันครับ
P1649
Member
Posts: 85 Joined: Sat Feb 09, 2013 6:37 pm
#7
Post
by P1649 » Sun May 26, 2013 9:16 pm
Code: Select all
Sub Col_Scale()
Dim cfColorScale As ColorScale
Selection.ClearFormats
Range("f1", Range("f" & Rows.Count).End(xlUp)).Select
Set cfColorScale = Selection.FormatConditions.AddColorScale(ColorScaleType:=2)
'cfColorScale.ColorScaleCriteria(1).FormatColor.Color = RGB(0, 0, 255)
cfColorScale.ColorScaleCriteria(2).FormatColor.Color = RGB(255, 255, 255)
Range("g1", Range("g" & Rows.Count).End(xlUp)).Select
Set cfColorScale = Selection.FormatConditions.AddColorScale(ColorScaleType:=2)
cfColorScale.ColorScaleCriteria(1).FormatColor.Color = RGB(255, 255, 255)
cfColorScale.ColorScaleCriteria(2).FormatColor.Color = RGB(255, 255, 0)
End Sub
ลบ conditional formatting จนหมดแล้ว รันจากโค้ดข้างบน พบว่า formatting เพิ่มมากขึ้นทุกครั้งที่ refresh เช่นเดิม แก้ไขได้อย่างไรครับ
snasui
Site Admin
Posts: 30801 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#8
Post
by snasui » Sun May 26, 2013 9:20 pm
ลองปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Sub Col_Scale()
Dim cfColorScale As ColorScale
Range("f1", Range("f" & Rows.Count).End(xlUp)).Select
'Clear all format
Selection.ClearFormats
Set cfColorScale = Selection.FormatConditions.AddColorScale(ColorScaleType:=2)
'cfColorScale.ColorScaleCriteria(1).FormatColor.Color = RGB(0, 0, 255)
cfColorScale.ColorScaleCriteria(2).FormatColor.Color = RGB(255, 255, 255)
Range("g1", Range("g" & Rows.Count).End(xlUp)).Select
'Clear all formats
Selection.ClearFormats
Set cfColorScale = Selection.FormatConditions.AddColorScale(ColorScaleType:=2)
cfColorScale.ColorScaleCriteria(1).FormatColor.Color = RGB(255, 255, 255)
cfColorScale.ColorScaleCriteria(2).FormatColor.Color = RGB(255, 255, 0)
End Sub
P1649
Member
Posts: 85 Joined: Sat Feb 09, 2013 6:37 pm
#9
Post
by P1649 » Sun May 26, 2013 9:39 pm
ใช้งานได้แล้ว ขอบคุณอาจารย์มากครับ
Flowchart / วิธีการคิดทบทวน ผมต้องฝึกฝนอีกมากเลย