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
:D ใช้ Range Name เข้ามาช่วยได้ครับ
  1. กดแป้น Alt+I,N,D กรณี Version 2007+ ให้คลิก New
  2. ช่อง Name: คีย์ ListName
  3. ช่อง Refers to: คีย์สูตร =OFFSET(DATA!$Q$2,0,0,COUNTA(DATA!$Q$2:$Q$100)) > OK
  4. ที่ ช่วงข้อมูลเข้าตามภาพที่แนบมาให้เปลี่ยนเป็น 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
:D หากต้องการทราบว่าเพียงว่าสั่งให้ 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
:D 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
:D กดแป้น 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 ทำงานครับ
:D เข้า 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
:D คลิกขวาที่ 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
:D ปรับสูตรใหม่เป็นด้านล่างครับ

=OFFSET('CAL2'!$H$10,0,0,COUNT('CAL2'!$H$10:$H$49))