返回列表 上一主題 發帖

下拉式要如何選擇後會自動帶出其他表單訊息

下拉式要如何選擇後會自動帶出其他表單訊息

想請問各位大大
如何能夠將下拉式選單的資料
在選擇後能夠帶出其他關聯式欄位的資訊



再選擇第一個下拉式選單(委託項目)後
就能夠把第二個下拉式選單(子項目)帶出來
第二個子項目帶出來後
TextBox資料帶出來

例如:主項目是
1號餐,那子項目就有漢堡、薯條、可樂
2號餐,那子項目就有雞塊、薯餅、紅茶...等等

最後在TextBox就會秀出金額 總共是:$129

程式可以這樣設關聯嗎?
這個功能不知道要怎麼寫,希望大大能解惑!
感激不盡>"<
Jared

[版主管理留言]
  • GBKEE(2013/7/25 07:13): 要學習可附檔說明看看

這樣的選單,能否應用在班表班別上

TOP

回復 12# GBKEE


    感謝大大的解答
這就是我想要的方式
不過BoX2 這欄就不用鎖起來
才方便有另外兩種選擇~(^口^)
Jared

TOP

回復 8# Jared
   
第一種寫法目前就是選擇完第一個ComboBox1
第二個選項會先呼應空白
只是想要讓他提前先顯示出來第一項

是這樣嗎?  1#表單的程式碼
  1. 'ListIndex = -1: 所選的不在 List清單內
  2. Dim 價格
  3. Private Sub ComboBox1_Change()
  4.     ComboBox2 = ""
  5.     TextBox1 = ""
  6.     If ComboBox1.ListIndex > -1 Then
  7.         ComboBox2 = ComboBox2.List(ComboBox1.ListIndex)
  8.         TextBox1 = 價格(ComboBox1.ListIndex)
  9.     End If
  10. End Sub
  11. '   Private Sub ComboBox2_Change()
  12. '       TextBox1 = ""
  13. '       If ComboBox2.ListIndex > -1 Then TextBox1 = 價格(ComboBox1.ListIndex)
  14. '   End Sub
  15. '****************************************************
  16. Private Sub CommandButton1_Click()
  17.     If ComboBox1.ListIndex = -1 Then MsgBox "餐點內容 需齊全 !!": Exit Sub
  18.     With Sheet10
  19.         .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 3).Value = Array(ComboBox1, ComboBox2, TextBox1)
  20.     End With
  21. End Sub
  22. Private Sub CommandButton2_Click()
  23.     test4.Hide
  24. End Sub
  25. Private Sub CommandButton3_Click()
  26.     ComboBox1 = ""
  27. End Sub
  28. Private Sub UserForm_Initialize()
  29.     With ComboBox1
  30.         .Font.Size = 12
  31.         .TextAlign = fmTextAlignCenter                  '文字置中
  32.         .List = Array("一號餐", "二號餐", "三號餐")
  33.     End With
  34.     With ComboBox2
  35.         .Font.Size = 12
  36.         .TextAlign = fmTextAlignCenter                  '文字置中
  37.         .List = Array("漢堡、薯條、可樂", "雞塊、薯餅、紅茶", "薯餅、薯條、冰淇淋")
  38.         .Locked = True                                  '禁止編輯
  39.     End With
  40.     With TextBox1
  41.         .Locked = True                                  '禁止編輯
  42.         .Font.Size = 12
  43.         .TextAlign = fmTextAlignCenter                   '文字置中
  44.     End With
  45.     價格 = Array(50, 60, 70)
  46. End Sub
複製代碼

TOP

回復  mark15jill


    感謝大大的協助
已經有找到我想要的寫法了(^口^)
Jared 發表於 2013-3-8 15:04



    小弟僅提示而已.. GBKEE大大才是高手

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 9# mark15jill


    感謝大大的協助
已經有找到我想要的寫法了(^口^)
Jared

TOP

感謝大大幫忙!
第一種研究了好一陣子才弄清楚寫法
第二種解法太福雜了些~還在努力
(u_u).....程式語法真 ...
Jared 發表於 2013-3-8 09:36


若以 GBKEE大大的程式碼,僅需先預設

Private Sub UserForm_Initialize()
    With ListBox1
        .ColumnWidths = .Width * (2 / 3) & "," & .Width * (1 / 3)   '顯示欄寬度
        .ColumnHeads = True                                         '欄位顯示 表頭
        .TextAlign = fmTextAlignCenter                              '文字置中
        .ColumnCount = 2                                            '顯示欄位數  餐點內容,價錢 兩欄
       .Font.Size = 12
       .AddItem (Sheet1.Cells(2, 3))
    End With
    With ComboBox1
        .Font.Size = 12
        .TextAlign = fmTextAlignCenter                              '文字置中
        .Text = Sheet1.Cells(1, 1)
    End With
   
    套餐定義
End Sub

不知道是否為您要的

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

感謝大大幫忙!
第一種研究了好一陣子才弄清楚寫法
第二種解法太福雜了些~還在努力
(u_u).....程式語法真的是高深莫測

主要是想要下拉式選單ComboBox1點選完第一號餐
那餐點內容ComboBox2會直接顯示第一筆(如果不是自己想要的,在去做其他選擇)
接著第三欄TextBox1就秀出價錢

第一種寫法目前就是選擇完第一個ComboBox1
第二個選項會先呼應空白
只是想要讓他提前先顯示出來第一項
是要怎麼改呢? (@@)
Jared

TOP

本帖最後由 GBKEE 於 2013-3-7 18:22 編輯

回復 5# Jared

附檔試試看

test.rar (25.17 KB)





  1. 'ListIndex = -1: 所選的不在 List清單內
  2. Private Sub ComboBox1_Change()
  3.     If ComboBox1.ListIndex > -1 Then
  4.         餐點
  5.     Else
  6.          ListBox1.RowSource = ""
  7.     End If
  8. End Sub
  9. Private Sub CommandButton1_Click()
  10.     Dim A
  11.     If ComboBox1.ListIndex = -1 Or Me.ListBox1.ListIndex = -1 Then MsgBox "餐點內容 需齊全 !!": Exit Sub
  12.     With Sheet10
  13.         .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 3).Value = Array(ComboBox1, ListBox1.List(ListBox1.ListIndex, 0), ListBox1.List(ListBox1.ListIndex, 1))
  14.     End With
  15. End Sub
  16. Private Sub CommandButton2_Click()
  17.     test4.Hide
  18. End Sub
  19. Private Sub CommandButton3_Click()
  20.     ComboBox1 = ""
  21. End Sub
  22. Private Sub UserForm_Initialize()
  23.     With ListBox1
  24.         .ColumnWidths = .Width * (2 / 3) & "," & .Width * (1 / 3)   '顯示欄寬度
  25.         .ColumnHeads = True                                         '欄位顯示 表頭
  26.         .TextAlign = fmTextAlignCenter                              '文字置中
  27.         .ColumnCount = 2                                            '顯示欄位數  餐點內容,價錢 兩欄
  28.        .Font.Size = 12
  29.     End With
  30.     With ComboBox1
  31.         .Font.Size = 12
  32.         .TextAlign = fmTextAlignCenter                              '文字置中
  33.     End With
  34.     套餐定義
  35. End Sub
  36. Private Sub 餐點()
  37.     With ListBox1
  38.         .RowSource = ""                                             '清除ListBox 清單的來源
  39.         .RowSource = Sheets("套餐").Names(ComboBox1.Value).RefersTo '指定ListBox 清單的來源 A1:C5 範圍的形式(不是 R1C1)
  40.     End With
  41. End Sub
  42. Private Sub 套餐定義()          '定義名稱
  43.     Dim R As Variant, i As Integer
  44.     With Sheets("套餐")
  45.         For Each R In .Names
  46.             R.Delete                '清除套餐的定義名稱
  47.         Next
  48.         Set R = .[A1]
  49.         i = 1
  50.         Do While .Cells(i, "A") <> ""
  51.             Set R = R.End(xlToRight)
  52.             ComboBox1.AddItem .Cells(i, "A")
  53.             .Names.Add Name:=.Cells(i, "A"), RefersTo:=.Range(R.CurrentRegion.Rows(2), R.CurrentRegion.Rows(R.CurrentRegion.Rows.Count))
  54.             '.Names.Add 新增 套餐的定義名稱
  55.             i = i + 1
  56.             Set R = R.End(xlToRight)
  57.         Loop
  58.     End With
  59. End Sub
複製代碼

TOP

本帖最後由 mark15jill 於 2013-3-7 16:44 編輯
回復  GBKEE


    感謝大大幫忙(0口0)~真是太強了
不過如果我是要點選一號餐,餐點和價錢都會自動跑出 ...
Jared 發表於 2013-3-7 15:08



    你一號餐的項目是甚麼??
例如 一號餐 是何種搭配 ???


ComboBox1.AddItem "一號餐"
ComboBox1.AddItem "二號餐"
ComboBox1.AddItem "三號餐"

ComboBox2.AddItem "漢堡、薯條、可樂"
ComboBox2.AddItem "雞塊、薯餅、紅茶"
ComboBox2.AddItem "薯餅、薯條、冰淇淋"

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

        靜思自在 : 欣賞別人就是莊嚴自己。
返回列表 上一主題