返回列表 上一主題 發帖

[發問] Listbox取資料問題

本帖最後由 GBKEE 於 2016-8-11 06:07 編輯

回復 9# Michelle-W
  1. Private Sub CommandButton1_Click()
  2.     Dim AA(), xi As Integer
  3.     With ListBox1
  4.         For xi = 0 To .ListCount - 1
  5.             '  判斷列表框 (ListBox1) 是否有被點選
  6.             If .Selected(xi) = True Then
  7.                 '  取出該行之數據,存入 AA 陣列中
  8.                 AA = Application.Index(ListBox1.List, xi + 1)
  9.                 Range("A1").Select
  10.                 '*******************
  11.                 Selection.End(xlUp).Select   
  12.                 '***'xlUp 往上 "A1"的 往上 還是在"A1"
  13.                 Sheets("sheet1").Range("a" & ActiveCell.Row + 1) = AA
  14.                 Exit For
  15.             End If
  16.         Next
  17.     End With
  18. End Sub
複製代碼
A欄中資料如何累積的請說明
是這樣嗎?
  1. Option Explicit
  2. Private Sub Ex_CommandButton1_Click()
  3.     Dim AA(), xi As Integer
  4.     With ListBox1
  5.         For xi = 0 To .ListCount - 1
  6.             '  判斷列表框 (ListBox1) 是否有被點選
  7.             If .Selected(xi) = True Then
  8.                 '  取出該行之數據,存入 AA 陣列中
  9.                 AA = Application.Index(ListBox1.List, xi + 1)
  10.                  With Range("A" & xi + 1)
  11.                     '.Cells = AA
  12.                     .Cells = .Cells + AA  '資料是累積的
  13.                ' Exit For       '離開 For 迴圈
  14.                '*******************
  15.                'Listbox1中多個不連續的資料, Exit For 就不執行下一個 .Selected(xi) = True
  16.                '******************************
  17.             End If
  18.         Next
  19.     End With
  20. End Sub
  21. Option Explicit
  22. Private Sub CommandButton1_Click()
  23.     Dim AA(), xi As Integer
  24.     With ListBox1
  25.         For xi = 0 To .ListCount - 1
  26.             '  判斷列表框 (ListBox1) 是否有被點選
  27.             If .Selected(xi) = True Then
  28.                 '  取出該行之數據,存入 AA 陣列中
  29.                 AA = Application.Index(ListBox1.List, xi + 1)
  30.                  With Range("A" & Rows.Count).End(xlUp)  '.Offset(1)  '**還是下一儲存格
  31.                     .Cells = AA
  32.                     '還是 .Cells = .Cells + AA '資料是累積的
  33.                 End With
  34.                     
  35.                     '***Count 屬性 傳回一個 Long (長整數),等於在一個集合物件中的物件數目。
  36.                     'Rows.Count : 工作表的最後一列
  37.                  
  38.                     ' ***Offset 屬性   套用至 Range 物件時用 Offset 屬性。
  39.                     '傳回 Range 物件,用以代表某個指定區域以外的範圍。唯讀。
  40.                     'expression.Offset(RowOffset, ColumnOffset)
  41.                     'Range("A" & Rows.Count).End(xlUp).Offset(1)
  42.                     '工作表A欄底部 , 往上到有資料的儲存格, 的下一儲存格
  43.                 'Exit For
  44.             End If
  45.         Next
  46.     End With
  47. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 16# Michelle-W
整理一下你的程式碼
可了解看看
  1. Option Explicit
  2. Dim Rng As Range, Msg As Boolean
  3. Private Sub UserForm_Initialize()
  4.     Msg = MsgBox("ListBox 清單的來源。" & vbLf & "Yes=使用RowSource" & vbLf & "No= 使用List(陣列)", vbYesNo) = vbYes
  5.     ListB1
  6. End Sub
  7. Public Sub ListB1()
  8.     Dim RO As Integer
  9.     With Sheet2
  10.         RO = IIf(.Cells(Rows.Count, 1).End(xlUp).Row > 2, .Cells(Rows.Count, 1).End(xlUp).Row, 2)
  11.         Set Rng = .Range("A2:A" & RO)
  12.     End With
  13.     With ListBox1
  14.         .MultiSelect = fmMultiSelectMulti
  15.         If Msg Then
  16.             .RowSource = Rng.Address(, , , 1, 1)
  17.         Else
  18.             .List = Rng.Value
  19.         End If
  20.         .ColumnCount = Rng.Columns.Count
  21.     End With
  22. End Sub
  23. Private Sub 新增_Click()
  24. '輸入的資料回傳至儲存格記錄
  25. Dim RO As Integer
  26. With Sheet2
  27.     RO = .[A65536].End(xlUp).Row + 1
  28.     .Cells(RO, 1) = TextBox1.Value
  29.     TextBox1.Value = ""
  30.     ListB1 '重設 ListBox1
  31. End With
  32. End Sub
  33. Private Sub 刪除_Click()
  34.     Dim i As Integer, r As String, E As Variant
  35.     For i = home.ListBox1.ListCount - 1 To 0 Step -1
  36.         If home.ListBox1.Selected(i) = True Then
  37.            If Msg = False Then         '**ListBox 清單的來源。No= 使用List(陣列)
  38.                 home.ListBox1.RemoveItem (i)
  39.             ElseIf Msg = True Then   '**ListBox 清單的來源。Yes=使用RowSource
  40.                 r = IIf(r <> "", r & "," & i + 1, i + 1)
  41.             End If
  42.         End If
  43.     Next
  44.     If Msg = True Then
  45.         For Each E In Split(r, ",")
  46.             Rng.Rows(E).Delete            '**刪除範圍中的資料 Yes=使用RowSource
  47.         Next
  48.         ListB1
  49.     End If
  50. End Sub
  51. Private Sub 匯入_Click()
  52.     Dim AA, xi As Integer
  53.     With ListBox1
  54.         For xi = 0 To .ListCount - 1
  55.             '  判斷列表框 (ListBox1) 是否有被點選
  56.             If .Selected(xi) = True Then
  57.                 '  取出該行之數據,存入 AA 陣列中
  58.                 AA = Application.Index(ListBox1.List, xi + 1)
  59.                  'With Sheets("sheet3").Range("A" & Rows.Count).Offset(1)  '.Offset(1)  '**還是下一儲存格
  60.                  With Sheets("sheet3").Range("A" & Rows.Count).End(xlUp).Offset(1)  '.Offset(1)  '**還是下一儲存格
  61.                     .Cells = .Cells + AA
  62.                     '還是 .Cells = .Cells + AA '資料是累積的
  63.                 End With
  64.             End If
  65.         Next
  66.     End With
  67. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 站在半路,比走到目標更辛苦。
返回列表 上一主題