Page 1 of 2
สอบทราบการใช้ Box
Posted: Thu Feb 19, 2015 1:30 pm
by yodpao.b
การใช้ Box
Capture01.JPG
จากรูป
ในวงกลมสีแดง ช่วงข้อมูลเข้า คือ DATA!Q2:Q13 แต่ในในบางครั้ง ข้อมูลจะมีแค่ DATA!Q2:Q4 ดังรูปที่แสดงด้านล่าง
Capture02.JPG
จะเห็นว่ามีช่วงด้านล่างของ Box ว่าง
คำถาม จะใช้คำสั่งอะไรครับ ที่จะให้ box มันเห็นแค่ข้อมูลที่มีอยู่
เพราะในบางครั้งข้อมูลมีหลายบรรทัด บางครั้งก็มีน้อยบรรทัด
ขอบคุณครับ
Re: สอบทราบการใช้ Box
Posted: Thu Feb 19, 2015 1:56 pm
by snasui

ใช้ Range Name เข้ามาช่วยได้ครับ
- กดแป้น Alt+I,N,D กรณี Version 2007+ ให้คลิก New
- ช่อง Name: คีย์ ListName
- ช่อง Refers to: คีย์สูตร =OFFSET(DATA!$Q$2,0,0,COUNTA(DATA!$Q$2:$Q$100)) > OK
- ที่ ช่วงข้อมูลเข้าตามภาพที่แนบมาให้เปลี่ยนเป็น ListName > OK
Re: สอบทราบการใช้ Box
Posted: Thu Feb 19, 2015 3:20 pm
by yodpao.b
ครับขอบคุณมาก
Re: สอบทราบการใช้ Box
Posted: Fri Feb 20, 2015 8:12 pm
by yodpao.b
กล่อง "ชนิดหลอดด้านบน"
ในตอนแรกว่าง เมื่อคลิกให้มันทำงานแล้วตัวหนังสือขึ้นมาแล้ว หลังจากเสร็จขั้นตอนนี้แล้ว
มันสามรถไปสั่งให้ VBA ทำงานต่อได้ไม่ครับ เช่นสั่งให้ VBA ไปพิมพ์เลข 1-10
ผมลองเขียนโคดแต่ติดที่ว่า box นี้มันไม่มีชื่อครับ
คำถาม มันสามรถส่งให้ VBA ทำงานได้หรือไม่
Re: สอบทราบการใช้ Box
Posted: Fri Feb 20, 2015 8:53 pm
by snasui

หากต้องการทราบว่าเพียงว่าสั่งให้ Macro ทำงานได้หรือไม่ได้ คำตอบคือสามารถสั่งให้ทำงานได้ครับ
Re: สอบทราบการใช้ Box
Posted: Fri Feb 20, 2015 9:10 pm
by yodpao.b
การจะเขียน Code กล่อง "ชนิดหลอดด้านบน"ต้องมีชื่อเรียก
เราจะรู้ชื่อ กล่อง "ชนิดหลอดด้านบน" ได้อย่างไรครับ
ท่านอาจารย์ลองแนะนำ Code ให้ด้วยนะครับ
Re: สอบทราบการใช้ Box
Posted: Fri Feb 20, 2015 9:11 pm
by snasui

Code ต้องเขียนมาเองก่อนผมจึงจะแนะนำให้ได้ว่าต้องเขียนอย่างไร ตามกฎข้อ 5 ด้านบนครับ
Re: สอบทราบการใช้ Box
Posted: Fri Feb 20, 2015 9:17 pm
by yodpao.b
ถ้าอย่างนั้น เราจะทรราบชื่อ ของกล่อง ได้จากตรงไหนครับ
Re: สอบทราบการใช้ Box
Posted: Fri Feb 20, 2015 9:55 pm
by snasui

กดแป้น Ctrl แล้วคลิกที่ Object จากนั้นสังเกตที่ Name Box ครับ
Re: สอบทราบการใช้ Box
Posted: Fri Feb 20, 2015 10:13 pm
by yodpao.b
Capture1.PNG
Code: Select all
Sub MacroWatt()
Sheets("DATA").Select
If Range("J2") <> "" Then
Range("B16") = Range("J3")
'Call MacroAdvancedFilter
'Call MacroClearFilter
End If
End Sub
จากรูปด้านบน เซล j3 จะว่าง
เมื่อคลิก box "เลือกชนิดหลอด"แล้ว ข้อมูล จะส่งมาที่ J3 เป็นตัวเลข
พอ เซล j3 มีตัวเลขขึ้น ในตอนนี้อยากให้ VBA ทำงานครับ code อยู่ด้านบนครับ
ถ้าสั่ง รันโคด ก็จะทำงานปกติ
แต่ถ้าคลิกเลือกชนิดของหลอด VBA ไม่ทำงานครับ
(น่าจะเป็นที่ไม่มีอะไรโยงไปหาcodeนั้น)
ช่วยแก้ไขให้ด้วยครับ
Re: สอบทราบการใช้ Box
Posted: Fri Feb 20, 2015 10:37 pm
by snasui
yodpao.b wrote:พอ เซล j3 มีตัวเลขขึ้น ในตอนนี้อยากให้ VBA ทำงานครับ

เข้า VBE แล้วดับเบิ้ลคลิกชีทปัจจุบันที่วาง Control > นำ Code นี้ไปวาง จากนั้นปรับใช้ตามต้องการครับ
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "J3" Then
'Your code
End If
End Sub
Re: สอบทราบการใช้ Box
Posted: Fri Feb 20, 2015 11:56 pm
by yodpao.b
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "J2" Then
Range("B16") = Range("J3")
Call MacroAdvancedFilter
Call MacroClearFilter
End If
End Sub
จาก code ด้านบน เมื่อ j2 มีการเปลี่ยนแปลงในเซล code จะทำงาน (เมื่อพิมพ์ค่าไปใน J2)
แต่ผมไม่ได้พิมพ์ ขั้นตอน คือ กล่อง box "เลือกชนิดหลอด" ส่งตัวเลขไปที่ j2 แล้ว ที่ j2 มีการเปลี่ยนแปลง แต่ code ไม่ทำงานต่อครับ จะให้โคดทำได้อย่างไร
ขออนุญาติแนบไฟล์ประกอบครับ
หน้าแรกเป็น ให้กรอกครับ
ส่วนหน้า 2 เป็นที่เก็บข้อมูลครับ
Re: สอบทราบการใช้ Box
Posted: Sat Feb 21, 2015 1:21 am
by yodpao.b
yodpao.b wrote:Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "J2" Then
Range("B16") = Range("J3")
Call MacroAdvancedFilter
Call MacroClearFilter
End If
End Sub
จาก code ด้านบน เมื่อ j2 มีการเปลี่ยนแปลงในเซล code จะทำงาน (เมื่อพิมพ์ค่าไปใน J2)
แต่ผมไม่ได้พิมพ์ ขั้นตอน คือ กล่อง box "เลือกชนิดหลอด" ส่งตัวเลขไปที่ j2 แล้ว ที่ j2 มีการเปลี่ยนแปลง แต่ code ไม่ทำงานต่อครับ จะให้โคดทำได้อย่างไร
Capture2.PNG
ขออนุญาติแนบไฟล์ประกอบครับ
หน้าแรกเป็น ให้กรอกครับ
ส่วนหน้า 2 เป็นที่เก็บข้อมูลครับ
Re: สอบทราบการใช้ Box
Posted: Sat Feb 21, 2015 6:47 am
by snasui

คลิกขวาที่ ComboBox > Assign Macro > New > โปรแกรมจะสร้าง Procedure มาให้ สามารถนำ Code ไปใส่ได้ตามต้องการครับ
Re: สอบทราบการใช้ Box
Posted: Sat Feb 21, 2015 2:06 pm
by yodpao.b
ใช่เลยครับแบบนี้ละครับที่ต้องการ
ขอบคุณมากครับ
Re: สอบทราบการใช้ Box
Posted: Wed Oct 07, 2015 3:28 pm
by yodpao.b
snasui wrote:ช่อง Refers to: คีย์สูตร =OFFSET(DATA!$Q$2,0,0,COUNTA(DATA!$Q$2:$Q$100)) > OK
อาจารย์ได้แนะนำให้ใช้สูตรแบบด้านบน
H2.JPG
ต้องการให้แสดงผลตามรูปด้านบนครับ
H1.JPG
จากรูปดานบน
ช่อง Refers to: คีย์สูตร=OFFSET(DATA0!$H$10,0,0,COUNTA(DATA0!$H$10:$H$49))แล้วครับ
สาเหตุเกิดจากค่าว่างนั้นเป็นสูตร "" ครับ ดังนี้ ในช่อง H12:40 นั้นใช้สูตร
{=IF(ROWS(H$10:H12)>COUNTIF(data_inverter!$D$8:$D$215,$A$6),"",INDEX(data_inverter!R$8:R$215,SMALL(IF(data_inverter!$D$8:$D$215=$A$6,ROW(data_inverter!$A$8:$A$215)-ROW(data_inverter!$A$8)+1),ROWS(H$10:H12))))}
H10.JPG
จะแก้ไขต้องจุดไหนดีครับ
Re: สอบทราบการใช้ Box
Posted: Wed Oct 07, 2015 3:34 pm
by yodpao.b
แนบไฟล์
Re: สอบทราบการใช้ Box
Posted: Wed Oct 07, 2015 4:29 pm
by DhitiBank
ใน refer to: ตรง COUNTA(DATA0!$H$10:$H$49) ลองเปลี่ยนเป็น
countif(DATA0!$H$10:$H$49,"*?")
ครับ
Re: สอบทราบการใช้ Box
Posted: Thu Oct 08, 2015 2:41 pm
by yodpao.b
11.JPG
ได้ทดลองทำแล้วครับ
ใน refer to: =OFFSET('CAL2'!$H$10,0,0,COUNTIF('CAL2'!$H$10:$H$49,"*?"))
ผลที่ได้ไม่โชว์ค่าครับดังรูปด้านล่างครับ ยังไม่ถูกต้องครับไม่รู้ว่าผมทำผิดขั้นตอนหรือไม่
10.JPG
ไฟล์ที่แนบครั้งที่แล้วขาดไปหน้าหนึ่งครับขอโทษ
Re: สอบทราบการใช้ Box
Posted: Thu Oct 08, 2015 3:08 pm
by snasui

ปรับสูตรใหม่เป็นด้านล่างครับ
=OFFSET('CAL2'!$H$10,0,0,COUNT('CAL2'!$H$10:$H$49))