Hamedanger
Thành viên chính thức


- Tham gia
- 2/12/14
- Bài viết
- 60
- Được thích
- 25
Bạn cho 1 biến i chạy từ đầu đến cuối listbox, dựa vào thuộc tính Listbox.Selected(i) để quyết định việc đưa hay không đưa Listbox.List(i) vào mảng. Tôi chỉ gợi ý vậy thôi, hiện tại tôi không dùng máy tính nên không viết code vào file được.
Private Sub CommandButton1_Click()
Dim ARR(), i, j
For i = 1 To ListBox1.ListCount
If ListBox1.Selected(i) = True Then
j = j + 1
ARR(j, 1) = ListBox1.Column(0).Selected(i)
ARR(j, 2) = ListBox1.Column(1).Selected(i)
ARR(j, 3) = ListBox1.Column(2).Selected(i)
End If
Next i
If j > 0 Then Sheet1.Range("H1").Resize(j, 3) = ARR
End Sub
E viêt thế này không hiểu có sai ở đâu không mà ko chạy được
Private Sub CommandButton1_Click()
Dim ARR(), i, j
ReDim ARR(1 To 10, 1 To 3)
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
j = j + 1
ARR(j, 1) = ListBox1.List(i)
ARR(j, 2) = ListBox1.Column(1, i)
ARR(j, 3) = ListBox1.Column(2, i)
End If
Next i
If j > 0 Then Sheet1.Range("H1").Resize(j, 3) = ARR
End Sub
Private Sub CommandButton1_Click()
Dim i, j, Tm
Tm = Me.ListBox1.List
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) Then
Tm(j, 0) = Tm(i, 0)
Tm(j, 1) = Tm(i, 1)
Tm(j, 2) = Tm(i, 2)
j = j + 1
End If
Next
If j > 0 Then
Sheet1.[H2:J21].ClearContents
Sheet1.[H2:J2].Resize(j) = Tm
End If
End
End Sub
Bạn sử dụng thêm listbox2 phụ cho ẩn đi, khi tìm lần đầu thì sẽ add dòng A trong listbox sang listbox2, tìm lần 2 được dòng B. Sau đó bạn Add listbox2 (Dòng A) xuống ô trước sau đó add listbox (Dòng B) xuống tiếp theo.Cũng bài này , e tạo thêm một textbox để tiện cho việc tra cứu (gõ ký tự vào textbox để tra )
Vấn đề này e đã giải quyết bằng hàm filter2Darray của thầy NDU. Nhưng còn chỗ này :
Khi e tra cứu lần 1 với từ khóa "abc" e tích chọn ra được dòng A
Khi e tra cứu lần 2 với từ khóa "def" e chọn ra được dòng B thì cái dòng A e đã chọn ko được lưu lại trên listbox nữa
Có cách nào để nó lưu lại rồi nhấn button là gắn tất cả những j mình từng chọn trên listbox xuống bảng tính không ạ
Thực sự cảm thấy vấn đề này quá sức e rồi
Id = ListBox1.ListIndexWith Me.ListBox1
On Error Resume Next
If .Selected(Id) Then
If Not Dic.Exists(.List(Id, 0)) Then _
Dic.Add .List(Id, 0), .List(Id, 0) & ";" & .List(Id, 1) & ";" & .List(Id, 2)
Else
Dic.Remove (.List(Id, 0))
End If
End With
E muốn hỏi sâu thêm tý nữa
Nêu như e muốn nó add xuốg bảng tính như hình này chẳng hạn thì cái đoạn code sẽ thay đổi như thế nào ?
View attachment 149486
Theo cách củ chuối của mình hy vọng giúp ích cho bạn.Vấn đề của em bây giờ là dữ liệu là kiểu số thì lỗi đã phát sinh anh à ! Làm sao để giữ được định dạng của data![]()
[COLOR=#ff0000]With Sheet1[/COLOR]
[COLOR=#ff0000]For i = 2 To WorksheetFunction.CountA(.Range("j1:j100"))[/COLOR]
[COLOR=#ff0000] .Range("j" & i).Value = .Range("j" & i).Formula[/COLOR]
[COLOR=#ff0000]Next i[/COLOR]
[COLOR=#ff0000]End With[/COLOR]
Private Sub CommandButton1_Click()
Dim i, Tm()
Sheet1.[H2:J100].ClearContents
Tm = Dic.Items
For i = 0 To Dic.Count - 1
Sheet1.Cells(i + 2, "H").Resize(, 3) = Split(Tm(i), ";")
Next
[COLOR=#ff0000]With Sheet1[/COLOR]
[COLOR=#ff0000]For i = 2 To WorksheetFunction.CountA(.Range("j1:j100"))[/COLOR]
[COLOR=#ff0000] .Range("j" & i).Value = .Range("j" & i).Formula[/COLOR]
[COLOR=#ff0000]Next i[/COLOR]
[COLOR=#ff0000]End With[/COLOR]
Unload Me
End Sub
Vậy bạn sử code như sau:Select ô tô vàng rồi chạy code, cột J thậm chí còn không định dạng được kiểu số![]()
Private Sub CommandButton1_Click()
Dim i, Tm()
Sheet1.[H2:J100].ClearContents
Tm = Dic.Items
For i = 0 To Dic.Count - 1
Sheet1.Cells(i + ActiveCell.Row, "H").Resize(, 3) = Split(Tm(i), ";")
Sheet1.Cells(i + ActiveCell.Row, "J").Value = Sheet1.Cells(i + ActiveCell.Row, "J").Formula
Next
Unload Me
End Sub