Page 1 of 1

ต้องการ AddItem แต่ใช้คำสั่งอ้างอิง object ไม่ถูกครับ

Posted: Thu Jun 03, 2010 12:00 pm
by ter-uni
สวัสดีครับ มีข้อสงสัยรบกวนผู้รู้ช่วยแนะนำหน่อยนะครับ คือมีปัญหาเรื่องการ addItem เข้า combo box น่ะครับ เนื่องจากผมได้สร้าง sub สำหรับ check ว่า object ภายใน worksheet เป็น combo box หรือเปล่า ถ้าหากเป็นชนิด combo box ให้ทำการ addItem ซึ่งผม code ดังนี้ครับ (Object ที่เป็นชนิด combo ผมตั้งชื่อขึ้นต้นด้วยคำว่า "combo" ไว้แล้วครับ)

Sub chkCombo()
dim numObj, k as integer
dim objName as String
numObj = Sheets("dataSheet").Shapes.Count
For k = 1 To numObj
If "*" & UCase(Left(Trim(Sheets("dataSheet").Shapes(k).Name), 5)) & "*" like "combo" Then
objName = Sheets("dataSheet").Shapes(k).Name
Sheets("dataSheet").objName.AddItem "Testing" & k & "time"
<=== Error
Exit For
End If
next k


ซึ่งผลการ run คำสั่งดังกล่าวเกิด Error เตือนว่า "Object doesn't support this property of method" ตรงบรรทัด <===Error ครับ ตามความเข้าใจของผมคือ objName เป็นชนิด String แต่การอ้างอิงต้องเป็นชนิด Object

จึงอยากรบกวนผู้รู้ช่วยแนะนำหน่อยนะครับว่าควรจะอ้างอิงอย่างไรหรือใช้คำสั่งอย่างไรถึงจะสามารถ addItem เข้า combo box ได้ครับ หรือการแปลงจากชนิด String เป็นชนิด Object เป็นอย่างไร รบกวนผู้รู้แนะแนวทางผมหน่อยนะครับ :|

Re: ต้องการ AddItem แต่ใช้คำสั่งอ้างอิง object ไม่ถูกครับ

Posted: Thu Jun 03, 2010 8:43 pm
by snasui
:D ปกติถ้าไม่ใช้ค่าในเซลล์ในการแสดงรายการผมจะใช้ ComboBox จาก Userform ดูตัวอย่างตามไฟล์แนบครับ

Code: Select all

Sub ComboBoxShow()
    UserForm1.ComboBox1.RowSource = ""
    With UserForm1.ComboBox1
        .AddItem "Jan"
        .AddItem "Feb"
        .AddItem "mar"
    End With
    UserForm1.Show
End Sub

Re: ต้องการ AddItem แต่ใช้คำสั่งอ้างอิง object ไม่ถูกครับ

Posted: Fri Jun 04, 2010 2:06 am
by ter-uni
ขอบคุณคุณ ssunai มาก ๆ เลยนะครับ ผมได้ลองนำไปประยุกต์นะครับ แต่รบกวนถามอีกหน่อยนะครับ คือ combo box ที่ผมได้วางไม่ได้วางบน form น่ะครับแต่วางบน worksheet น่ะครับ ลองใช้คำสั่งถามที่แนะนำ แต่ Error อยู่น่ะครับ พอจะแนะนำหรือให้ความรู้หน่อยนะครับ ว่าการอ้างอิงที่ถูกต้องเป็นอย่างไร หรือการ convert จาก String เป็น object เป็นอย่างไร ขอบคุณนะครับ :oops:

Re: ต้องการ AddItem แต่ใช้คำสั่งอ้างอิง object ไม่ถูกครับ

Posted: Fri Jun 04, 2010 12:06 pm
by snasui
:D ผมลองทดสอบแล้วไม่พบว่าสามารถ Add item ใน ComboBox ที่สร้างจาก Control Toolbox ใน Worksheet ตามที่ถามมาได้ครับ แต่สามารถที่จะ Add item ใน ComboBox ที่สร้างจาก Forms ได้โดยใช้ข้อมูลในเซลล์มา Fill ตามตัวอย่างด้านล่างและไฟล์แนบประกอบครับ

Code: Select all

Option Explicit

Sub TestComboBox1()
Dim cb As Object
    For Each cb In Worksheets("dataSheet").Shapes
            If LCase(Left(cb.Name, 4)) = "drop" Then
                    cb.ControlFormat.ListFillRange = "A1:A10"
            End If
    Next cb
End Sub

Re: ต้องการ AddItem แต่ใช้คำสั่งอ้างอิง object ไม่ถูกครับ

Posted: Tue Jun 08, 2010 2:23 pm
by ter-uni
ขอบคุณคุณ snasui มาก ๆ เลยครับผม ได้นำไปประยุกต์ใช้แล้วนะครับแก้ไขได้แล้วครับ ผมแก้โดยเขียน Sub ขึ้นมาโดยรับค่าที่เป็น Object แล้วให้เรียกใช้ sub ดังกล่าวที่หน้า worksheet แล้วส่งค่า Object ที่เป็น combo box อันนั้นไปครับผม ดังนี้ครับ

ที่ Sub
Sub addVal(comboObj as Object)
Sheets(data).Select
With comboObj
.addItem "test"
end with
--------------------------------------
ที่หน้า worksheet
Call addVal(Me.Combo1.Object)

เผื่อใครเจอปัญหาแบบผมลองนำไปประยุกต์ใช้ดูนะครับ ขอบคุณคุณ snasui ด้วยนะครับ