none
combobox的疑問 RRS feed

  • 問題

  • Private Sub Command1_Click()


    If Option1.value Then '如果選擇的是廠商(預設)


    WhereType = "SAM_TYPE = 'STM' "
    Combo1.Clear'@@@@@@@
    Combo1.AddItem "廠進"
    Combo1.AddItem "廠退"


    End If

    If Option2.value Then '如果選擇的是客戶


    WhereType = "SAM_TYPE = 'SAM' "
    Combo1.Clear'@@@@@@@
    Combo1.AddItem "出貨"
    Combo1.AddItem "退貨"
    Combo1.AddItem "銷貨"

    End If

    MsgBox Combo1.List(Combo1.ListIndex)


    End Sub


    -----------------------------------------------------------

    Private Sub Option1_Click()

    Combo1.Clear
    Combo1.AddItem "廠進"
    Combo1.AddItem "廠退"

    End Sub

    -------------------------------------------------------------

    Private Sub Option2_Click()

    Combo1.Clear
    Combo1.AddItem "出貨"
    Combo1.AddItem "退貨"
    Combo1.AddItem "銷貨"

    End Sub


    不好意思 目前是用6.0 有個問題想要請教一下

    form上有optopn、combobox和button

    我option完 再選擇combobox的item 最後再按下button

    我發現combobox選到的值會不見耶....但往下拉item是還在的

    加了MsgBox Combo1.List(Combo1.ListIndex)去看一下

    的確是空的

    http://imgur.com/SW4tA
    http://imgur.com/hia0s
    http://imgur.com/TOW01


    前面有兩個地方 Combo1.Clear'@@@@@@@

    我把這兩個地方拿掉的話

    就可以成功顯示出來了

    但是....因為沒有clean的關係

    所以我每次按完button之後 都會累加item...



    想請問我是不是那邊還有的邏輯沒想到 還得要修改甚麼嗎??

    2012年8月1日 上午 07:49

解答

  • 你點選了 Option1 觸發 Option1_Click()  或是 Option2 觸發 Option2_Click() 

    已經更新了 Combo1 的內容了,為何還需要在 Command1_Click() 裡面,

    再做一次 Clear,並且又AddItem ? 這一步 應該不需要吧 

    由於你在 Command1_Click()裡面把Combo1.Clear 後又 Combo1.AddItem

    所以 Combo1.ListIndex 才會沒有,因此你抓到的只是空值。

    依照你的狀況,應該這樣就可以了吧

    If Option1.value Then '如果選擇的是廠商(預設)
        WhereType = "SAM_TYPE = 'STM' " 
    End If
    
    If Option2.value Then '如果選擇的是客戶
        WhereType = "SAM_TYPE = 'SAM' " 
    End If
    
    MsgBox Combo1.List(Combo1.ListIndex) 


    • 已編輯 Bruce_柏 2012年8月1日 上午 08:31
    • 已標示為解答 Qoo 2012年8月1日 上午 08:58
    2012年8月1日 上午 08:30

所有回覆

  • 你點選了 Option1 觸發 Option1_Click()  或是 Option2 觸發 Option2_Click() 

    已經更新了 Combo1 的內容了,為何還需要在 Command1_Click() 裡面,

    再做一次 Clear,並且又AddItem ? 這一步 應該不需要吧 

    由於你在 Command1_Click()裡面把Combo1.Clear 後又 Combo1.AddItem

    所以 Combo1.ListIndex 才會沒有,因此你抓到的只是空值。

    依照你的狀況,應該這樣就可以了吧

    If Option1.value Then '如果選擇的是廠商(預設)
        WhereType = "SAM_TYPE = 'STM' " 
    End If
    
    If Option2.value Then '如果選擇的是客戶
        WhereType = "SAM_TYPE = 'SAM' " 
    End If
    
    MsgBox Combo1.List(Combo1.ListIndex) 


    • 已編輯 Bruce_柏 2012年8月1日 上午 08:31
    • 已標示為解答 Qoo 2012年8月1日 上午 08:58
    2012年8月1日 上午 08:30
  • 您好

    會在 Command1_Click()裡面 clean又add

    是因為那時候想說 使用者可以一直重複去按button

    所以我的邏輯是每次按的時候 去清除"上一次"的item

    聽您這樣子講 才知道錯在哪裡了

    謝謝您的指導

    2012年8月1日 上午 08:58