Page 1 of 1

การเรียกใช้ Graph ใน VBA ทำอย่างไรครับ

Posted: Mon Nov 23, 2015 9:56 am
by สมควร
รบกวนด้วยครับ
1. List box 1คือผมต้องการให้เลือกกลุ่มจังหวัดของข้อมูล
2. รับค่าจากList box 1 มาแสดงใน List box 2 คือปีของข้อมูลในกลุ่มจังหวัดที่มี
3. คลิกเลือกปีของข้อมูล แล้วแสดงผล กราฟเป็นวงกลมครับ
ซึ่งผมลองเขียน แล้วครับแต่ยังสับสนอยู่ครับ

Code: Select all

Private Sub ListBox1_Click()
subject = ListBox1.Text
'ListBox2 = ListBox1.Text

    Call SortData
    Call SumInOut
 Select Case subject
            Case "South"
                If C1 > 0 Then
                Sheets(subject).ChartObjects.Delete
                End If
                Call DrawGraphDay
                C1 = 1
            Case "SouthBorder"
                If C2 > 0 Then
                Sheets(subject).ChartObjects.Delete
                End If
                Call DrawGraphDay
                C2 = 1

            Case "Songkhla"
                If C3 > 0 Then
                Sheets(subject).ChartObjects.Delete
                End If
                Call DrawGraphDay
                C3 = 1
               
             Case "Stun"
                If C4 > 0 Then
                Sheets(subject).ChartObjects.Delete
                End If
                Call DrawGraphDay
                C4 = 1

            Case "Pattani"
                If C5 > 0 Then
                Sheets(subject).ChartObjects.Delete
                End If
                Call DrawGraphDay
                C5 = 1

            Case "Yala"
                If C6 > 0 Then
                Sheets(subject).ChartObjects.Delete
                End If
                Call DrawGraphDay
                C6 = 1

            Case "Naratiwat"
                If C7 > 0 Then
                Sheets(subject).ChartObjects.Delete
                End If
                Call DrawGraphDay
                C7 = 1
          ListBox2 = ListBox1.Text
              End Select
   
End Sub

Re: การเรียกใช้ Graph ใน VBA ทำอย่างไรครับ

Posted: Mon Nov 23, 2015 1:59 pm
by bank9597
:) แนบไฟล์ตัวอย่างมาดูหน่อยครับ

Re: การเรียกใช้ Graph ใน VBA ทำอย่างไรครับ

Posted: Mon Nov 23, 2015 3:17 pm
by สมควร
ตามไฟล์แนบครับ
ผมอยากให้ดึงข้อมูลแต่ล่ะปีแล้วแสดงกราฟออกมาครับ
ขอบคุณมากน่ะครับ

Re: การเรียกใช้ Graph ใน VBA ทำอย่างไรครับ

Posted: Mon Nov 23, 2015 5:34 pm
by bank9597
:) สิ่งที่ต้องขอความร่วมมือมีดังนี้ครับ

1. ระบุปัญหาว่าเกิดขึ้น ณ จุดใด ฟอร์มไหน โมดูลใด
2. หยิบปัญหาขึ้นมาถาม แค่ 1 ปัญหา ต่อ 1 ครั้ง และแก้ให้จบไปที่ละปัญหา
3. ไม่แนบมาทั้งระบบ เพราะผู้ตอบไม่ทราบครับว่ามีปัญหาส่วนไหน
4. ควรมีตัวอย่างคำตอบหรือผลลัพธ์ที่อยากได้ประกอบมาด้วยเสมอ
5. โค๊ดที่อยู่ในไฟล์ ต้องเขียนมาเอง พยายามยามอย่าไปคัดลอกมา แล้วให้ผู้ตอบทำให้ หรือแก้ให้ทั้งหมด

เท่าที่ผมดูแล้ว เจอปัญหา และข้อผิดพลาดเช่น

1. ฟังก์ชื่อ DrawGraphDay มีอยู่จริงไหม ลองตรวจสอบดู
2. โค๊ดที่เขียนใน Object Form ไม่ควรสร้างฟังก์ชั่นที่เป็น Public หรือ ประกาศตัวแปรที่เป็น Public เพราะถึงยังไงก็เรียกใช้จากที่อื่นไม่ได้ และอาจจะจะไปซ้ำซ้อนกับ Global Function หรือ Global Variable ได้
3. การเขียนโค๊ดให้รับค่าจาก ListBox ไม่เหมือนกับการรับค่าจาก textbox
4. การสั่งให้โค๊ดทำงาน ควรอยู่ใน event อื่น เช่น OnChange, AfterUpdate เป็นต้น ไม่ใช่ OnClick

เท่าที่ดูผ่านๆ เจอปัญหาตามที่กล่าวไว้ครับ ลองเริ่มต้นในการตั้งคำถามใหม่ครับ :)

Re: การเรียกใช้ Graph ใน VBA ทำอย่างไรครับ

Posted: Tue Nov 24, 2015 11:23 pm
by snasui
bank9597 wrote: :)

2. โค๊ดที่เขียนใน Object Form ไม่ควรสร้างฟังก์ชั่นที่เป็น Public หรือ ประกาศตัวแปรที่เป็น Public เพราะถึงยังไงก็เรียกใช้จากที่อื่นไม่ได้ และอาจจะจะไปซ้ำซ้อนกับ Global Function หรือ Global Variable ได้
:D การประกาศ Function เป็น Public ใน UserForm สามารถเรียกใช้จาก Module ต่างๆ ได้ และหากเขียน Function ที่ Module สามารถเรียกใช้ใน Worksheet ได้ครับ

กรณีประกาศตัวแปรซ้ำซ้อนโดยใช้ชื่อเดียวกันใน Scope เดียวกัน โปรแกรมจะฟ้องว่า Duplicate หรือ Ambiguous name แต่หากประกาศคนละ Scope สามารถใช้ได้หากไม่สับสนกับตนเองและผู้ที่จะมาทำงานนี้ต่อครับ :mrgreen:

Re: การเรียกใช้ Graph ใน VBA ทำอย่างไรครับ

Posted: Wed Nov 25, 2015 8:59 am
by สมควร
ขอบคุณมากครับ
ผมขอสอบถามเพิ่มเติมครับ หากผมต้องการแขวน โปรแกรมมาโคร VBA ไว้ในเว็บที่เขียนด้วย PHP สามารถทำได้หรือไม่ครับ

Re: การเรียกใช้ Graph ใน VBA ทำอย่างไรครับ

Posted: Wed Nov 25, 2015 10:14 am
by bank9597
การประกาศ Function เป็น Public ใน UserForm สามารถเรียกใช้จาก Module ต่างๆ ได้
:D ผมได้ทดสอบแล้วครับ ไม่สามารถเรียใช้ได้ครับ

ผมเขียนฟังก์ชั่นไว้ใน Form1 ประการเป็น Public Function

จากนั้นเรียกใช้งานจาก Form2 ผลลัพธ์คือ ไม่ได้ครับ

ผมสร้างโมดูลขึ้นมา แล้วเรียกใช้ฟังก์ชั่นใน Form2 ผลลัพธ์คือ ไม่ได้ครับ

ผิดพลาดประกาศใด แนะนำผมด้วยครับ

Re: การเรียกใช้ Graph ใน VBA ทำอย่างไรครับ

Posted: Wed Nov 25, 2015 10:19 am
by bank9597
สมควร wrote:ขอบคุณมากครับ
ผมขอสอบถามเพิ่มเติมครับ หากผมต้องการแขวน โปรแกรมมาโคร VBA ไว้ในเว็บที่เขียนด้วย PHP สามารถทำได้หรือไม่ครับ
:D ไม่ได้ครับ VBA คือ Visual Basic For Application สามารถใช้งานได้ใน Application นั้นๆ ซึ่งแต่ละแอพพลิเคชั่นจะมี object ที่ต่างกันไป

Re: การเรียกใช้ Graph ใน VBA ทำอย่างไรครับ

Posted: Fri Nov 27, 2015 6:41 am
by snasui
:D ตัวอย่างการเรียกใช้งาน Function ที่เขียนใน UserForm ผ่านทาง Module ปกติครับ

Code: Select all

Sub Test()
        MsgBox frmForm.f_msgAlert("Hollow World")
End Sub

Re: การเรียกใช้ Graph ใน VBA ทำอย่างไรครับ

Posted: Mon Nov 30, 2015 10:39 am
by bank9597
ขอบคุณมากครับ :)