Board logo

標題: [發問] ComboBox 增加選項 [打印本頁]

作者: 小華    時間: 2013-5-22 21:45     標題: ComboBox 增加選項

小弟想請問如何用程式碼寫ComboBox要顯示的值???
而我要顯示的值會先輸入在Excel表單裡提供ComboBox顯示     例如:A1:A10
再來就是要顯示的值會增加     例如:A1:A20
要如何讓ComboBox也自動的增加???
作者: Hsieh    時間: 2013-5-23 08:56

回復 1# 小華
增加選項的時機為何?
作者: GBKEE    時間: 2013-5-23 10:02

回復 1# 小華
  1. ComboBox1.List = Range("A1", [A1].End(xlDown)).Value
複製代碼

作者: 小華    時間: 2013-5-23 21:07

回復 2# Hsieh


    內容可能是員工姓名或是編號等等........

    會因為現實狀況選項的內容會有所增減
作者: 小華    時間: 2013-5-23 21:42

回復 3# GBKEE


    程式碼輸入進去後還是無法顯示值

   A1:A10的值例如是 1、2、3.....10

   後續會增加數值 A1:A20   例如:1、2、3......20

想請問該怎麼寫 才可以讓ComboBox顯示的值也會自動增加
作者: luhpro    時間: 2013-5-23 21:50

回復  GBKEE
    程式碼輸入進去後還是無法顯示值
   A1:A10的值例如是 1、2、3.....10
   後續 ...
小華 發表於 2013-5-23 21:42

因為你要在每次增加資料時都要變更ComboBox選單內的資料,
所以試著將程式放在 Change 事件處理程序內 :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.   ComboBox1.List = Range("A1", [A1].End(xlDown)).Value
  3. End Sub
複製代碼

作者: GBKEE    時間: 2013-5-24 06:59

回復 5# 小華
工作表上的控制項 ComboBox 事件 ComboBox1_GotFocus()
  1. Private Sub ComboBox1_GotFocus()
  2.     ComboBox1.List = Range("A1", [A1].End(xlDown)).Value
  3. End Sub
複製代碼
表單上的控制項 ComboBox 事件 ComboBox1_Enter()
  1. Private Sub ComboBox1_Enter()
  2.     ComboBox1.List = Range("A1", [A1].End(xlDown)).Value
  3. End Sub
複製代碼

作者: 小華    時間: 2013-5-25 18:54

回復 7# GBKEE


    用了還是不會顯示值.......
   
   我找了超板之前的定義名稱方法    就會顯示值了
作者: GBKEE    時間: 2013-5-25 19:30

回復 8# 小華
請附檔看看
作者: 小華    時間: 2013-5-25 19:55

回復 9# GBKEE
作者: 小華    時間: 2013-5-25 20:08

回復 9# GBKEE


    有試過迴圈的寫法  可是值還是顯示不出來  不知道問題點在哪......
  1. Private Sub Year01_Change()
  2. Set x = Sheets("Base")
  3. For I = 4 To 20
  4.      If x.Cells(I, 20) <> "" Then
  5.      Year01.AddItem x.Cells(I, 20)
  6.      Next I
  7.      End If
  8. End Sub
複製代碼

作者: GBKEE    時間: 2013-5-26 07:11

本帖最後由 GBKEE 於 2013-5-26 07:15 編輯

回復 11# 小華

  1. Private Sub Year01_Change()
  2.     Set x = Sheets("Base")
  3.     For I = 4 To 20
  4.         If x.Cells(I, 20) <> "" Then
  5.             Year01.AddItem x.Cells(I, 20)
  6.         End If     '***你對調了**
  7.      Next I        '***你對調了**
  8. End Sub
複製代碼
  附檔表單程式碼如要可以使用   x.[t4].End(xlDown)
不加 x.  [t4]是ActiveSheet(使用中)工作表的儲存格,無法結合"Base"的儲存格與ActiveSheet的儲存格
如 "Base"是ActiveSheet時 就可以不加 x.  
Private Sub Year01_Change()
Set x = Sheets("Base")
ComboBox1.List = x.Range("t4", x.[t4].End(xlDown)).Value
'** ComboBox1 *** 是否要改成 Year01
End Sub

1#說 要如何讓ComboBox也自動的增加
是希望點選Year01可以載入所有的年度資料供選擇,可如下
Enter、Exit 事件
Enter 主要發生在一個控制項,從同一表單上的另一個控制項取得駐點之前;Exit 會在一個控制項失去駐點時發生。
  1. Private Sub Year01_Enter()
  2.     Set x = Sheets("Base")
  3.     Year01.List = x.Range("t4", x.[t4].End(xlDown)).Value
  4. End Sub
複製代碼

作者: 小華    時間: 2013-5-26 21:18

回復 12# GBKEE


謝謝先進!!   
   
把程式碼寫在Enter事件,值就可以顯示出來了

另外想請問版主
   
Year01.List = x.Range("t4", x.[t4].End(xlDown)).Value    這句程式碼代表甚麼意思??
   
因為我有參考別人的寫法   他是用迴圈的寫法加上Additem
作者: GBKEE    時間: 2013-5-26 22:08

回復 13# 小華
控制項的清單=儲存格(範圍)的值或是陣列
  如Year01.List =Range(t4:t20).Value   
  如Year01.List =array("a","b","c","d","e")




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)