返回列表 上一主題 發帖

[發問] Listbox取資料問題

[發問] Listbox取資料問題

因最近剛碰自訂表單的部分
有爬問看了一下我想要的寫法
目前有個疑問
請問我的表單在sheet1
資料記錄在sheet2
如何修改目前的程式碼才能讓Listbox1顯示sheet2 A欄全部的資料??

但A欄的資料會持續增加
目前也不曉得該如何修改.RowSource = "A2:A9"
可以自動讀取A欄有資料的部分??

請問有人可以指點一下嗎?
感謝感謝~~~
Book1.rar (17.4 KB)

回復 1# Michelle-W
請參考 請問出勤系統設計

TOP

回復 2# c_c_lai


我稍早有看過這篇
但我不懂為什麼她的Listbox可以顯示別的工作表的資料
看不太懂她的Listbox的程式碼意思...
還是您可以協助解釋一下她的意思?
為什麼Listbox可以顯示資料

非常感謝

Private Sub ListBox1_Change()
    Dim AA(), xi As Integer
   
    With ListBox1
        For xi = 0 To .ListCount - 1
            If .Selected(xi) = True Then
                AA = Application.Index(ListBox1.List, xi + 1)
                ' 陣列中抽出指定的元素陣列(這裡是一維陣列)
                TextBox2.Value = AA(1)
                TextBox3.Value = AA(2)
                TextBox4.Value = AA(3)
                TextBox5.Value = AA(5)
                comEnable TextBox5.Value, IIf(TextBox5.Value = "DA", True, False)
            End If
        Next
    End With
End Sub

TOP

  1. Private Sub CommandButton1_Click()
  2. '輸入的資料回傳至儲存格記錄
  3. With Sheet2
  4. 'Set a = .[A65536].End(xlUp).Offset(1, 0)
  5. 'a.Resize(, 1) = Array(TextBox1)
  6.     ro = .[A65536].End(xlUp).Row + 1
  7.     .Cells(ro, 1) = TextBox1.Value
  8.     TextBox1.Value = ""
  9.     ListB1 '重設 ListBox1
  10. End With
  11. End Sub

  12. Private Sub UserForm_Initialize()
  13. ListB1
  14. End Sub

  15. Public Sub ListB1()
  16.     ro = Sheet2.[A65536].End(xlUp).Row
  17.     With ListBox1
  18.         .MultiSelect = fmMultiSelectMulti
  19.         .RowSource = "Sheet2!A2:A" & ro '如何使其資料顯示sheet2-A欄有資料的部分??
  20.         .ColumnCount = 2
  21.     End With
  22. End Sub
複製代碼
回復 1# Michelle-W

TOP

回復 4# lpk187


謝謝!!
您還幫我修改了CommandButton的程式碼
我還沒想到可以在CommandButton上面直接更新Listbox
非常感謝^^"

TOP

回復 3# Michelle-W
  1. Private Sub 列表框_Change()
  2.     Dim AA(), xi As Integer
  3.    
  4.     With 列表框
  5.         For xi = 0 To .ListCount - 1
  6.             '  判斷列表框 (ListBox1) 是否有被點選
  7.             If .Selected(xi) = True Then
  8.                 '  取出該行之數據,存入 AA 陣列中
  9.                 AA = Application.Index(列表框.List, xi + 1)
  10.                 ' 陣列中抽出指定的元素陣列 (這裡是一維陣列)
  11.                 工號.Value = AA(1)
  12.                 姓名.Value = AA(2)
  13.                 組別.Value = AA(3)
  14.                 出勤站別.Value = AA(5)
  15.                 '  同時存入     出勤站別、出勤時數、以及改變可操機數之旗標
  16.                 comEnable 出勤站別.Value, IIf(出勤站別.Value = "DA", True, False)
  17.                 Exit For
  18.             End If
  19.         Next
  20.     End With
  21.    
  22.     overTime
  23. End Sub
複製代碼

TOP

本帖最後由 c_c_lai 於 2016-8-9 17:42 編輯

回復 3# Michelle-W
模組:
  1. Sub DA出勤()
  2.     Dim rng As Range
  3.    
  4.     With DA出勤更新.列表框
  5.         '.MultiSelect = fmMultiSelectMulti ' => 1 : 列表框 (ListBox1) 屬性設定可複選
  6.         ' fmMultiSelectSingle 0 只能選取一個專案( 預設)。
  7.         ' fmMultiSelectSimple 1 按下空白鍵或按下滑鼠鍵,可以選取、
  8.         ' 取消選取清單中的專案。
  9.         ' fmMultiSelectExtended 2 按下SHIFT 並按下滑鼠鍵,或按下SHIFT
  10.         ' 並按下一個方向鍵,可選取一個範圍內的所有專案。按下CTRL 並
  11.         ' 按下滑鼠鍵,可選取或取消選取一個專案。
  12.         ' .Visible = False
  13.         ' .ColumnHeads = True
  14.         .ColumnCount = 5
  15.         ' 指定下拉式清單方塊或清單方塊的顯示行數。
  16.         .ColumnWidths = "60,80,60,80,60"
  17.         ' 指定多行下拉式清單方塊或清單方塊中的各行寬度。
  18.     End With
  19.    
  20.     With Sheets("人力資料庫")
  21.         .Select
  22.         '  Set rng = Range(.Range("C2:E" & .[E2].End(xlDown).Row), .Range("G2:G" & .[G2].End(xlDown).Row))
  23.         'Set rng = .Range("C2:E" & .[E2].End(xlDown).Row)
  24.         Set rng = Range(.[C1], .[G1].End(xlDown))
  25.         DA出勤更新.列表框.RowSource = rng.Address
  26.     End With

  27.     Sheets("操作介面").Select
  28.     DA出勤更新.Show
  29. End Sub
複製代碼
附上備註 ( ' ) 可幫助你明白其為何及其作用。

TOP

回復 7# c_c_lai


謝謝C大大
有您的解釋,我比較容易理解各程式碼的邏輯與作用了
真的非常感謝~~!!!

TOP

回復 7# c_c_lai


C大~不好意思請教您一下
我想要選擇Listbox1中多個不連續的資料,可以存至sheet1的A欄中
資料是累積的,但我目前的程式碼執行起來怪怪的,請問哪邊錯了QQ?
可以麻煩您指點一下嗎? 感恩~

Private Sub CommandButton1_Click()
    Dim AA(), xi As Integer
    With ListBox1
        For xi = 0 To .ListCount - 1
            '  判斷列表框 (ListBox1) 是否有被點選
            If .Selected(xi) = True Then
                '  取出該行之數據,存入 AA 陣列中
                AA = Application.Index(ListBox1.List, xi + 1)
                Range("A1").Select
                Selection.End(xlUp).Select
                Sheets("sheet1").Range("a" & ActiveCell.Row + 1) = AA
                Exit For
            End If
        Next
    End With

End Sub

TOP

回復 9# Michelle-W
                Range("A1").Select
                Selection.End(xlUp).Select
                Sheets("sheet1").Range("a" & ActiveCell.Row + 1) = AA

你這三行指的是?

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題