vova2209
Thành viên tích cực
- Tham gia
- 5/4/17
- Bài viết
- 825
- Được thích
- 110
- Giới tính
- Nam
- Nghề nghiệp
- Đường bộ
Mình thấy code trong file của bạn mình không hiểu để làm gì, mình đã dọn dẹp sang 1 bên. Mình thấy trên diễn đàn code của anh huthang_bd áp dụng vào bài của bạn cũng được, mình làm ra file gửi lên . Bạn tham khảo. Mình không biết nhiều về code, chỉ biết copy paste vào nên bạn tự nghiên cứu thêm nhé.Anh chị giúp em code tìm kiếm:
VD khi đánh chữ "cắt" thì sẽ tìm được những dòng nào có chữ cắt hiện lên form, khi kích đúp vào thì sẽ đi đến vị trí dòng đó
Mong anh chị giúp đỡ em!
View attachment 231570
Cảm ơn bạn! Tối mình về xem.Mình thấy code trong file của bạn mình không hiểu để làm gì, mình đã dọn dẹp sang 1 bên. Mình thấy trên diễn đàn code của anh huthang_bd áp dụng vào bài của bạn cũng được, mình làm ra file gửi lên . Bạn tham khảo. Mình không biết nhiều về code, chỉ biết copy paste vào nên bạn tự nghiên cứu thêm nhé.
Được rồi bạn! đúng ý mình.. cảm ơn bạn nhiều!Mình thấy code trong file của bạn mình không hiểu để làm gì, mình đã dọn dẹp sang 1 bên. Mình thấy trên diễn đàn code của anh huthang_bd áp dụng vào bài của bạn cũng được, mình làm ra file gửi lên . Bạn tham khảo. Mình không biết nhiều về code, chỉ biết copy paste vào nên bạn tự nghiên cứu thêm nhé.
Muốn 100 thì dứt khoát phải được 100.Bạn ơi! mình bị như này chỉ mà không được, cột thứ 2 dài ngoẵng ra ý. 319.95pt chỉnh thành 100pt vẫn bị dài, nên đẩy hết các phần khác không xem được. không biết do lỗi gì
Toàn hình (ảnh) thế này dễ lắm, dùng photoshop cắt dán kéo chuột mấy cái là xong, việc chi phải ExcelBạn ơi! mình bị như này chỉ mà không được, cột thứ 2 dài ngoẵng ra ý. 319.95pt chỉnh thành 100pt vẫn bị dài, nên đẩy hết các phần khác không xem được. không biết do lỗi gì
View attachment 231713View attachment 231714
Mò thêm chút nữa đi bác, biết đâu vớ bở. Cũng có thể trong code đã có đoạn chỉnh độ rộng rùi ý ạ.Đoán mò thôi.
Trong code có không thì nhìn ảnh sao biết được? Mà nếu trong code đổi thành 100 thì phải có 100 chứ không thể 319 được.Mò thêm chút nữa đi bác, biết đâu vớ bở. Cũng có thể trong code đã có đoạn chỉnh độ rộng rùi ý ạ.
cột 3 4 5 có giá trị, cột 2 đang bị đẩy rộng ra nên ko nhìn thấy cột 3 4 5Muốn 100 thì dứt khoát phải được 100.
Hiện tại cột 3, 4, 5 làm gì có giá tri. Nhập giá trị vào 3, 4, 5 thì mới thấy chúng ở đúng vị trí.
Đoán mò thôi.
Tôi đã nhiều lần nói mà bạn không sửa. Lần cuối cùng tôi trả lời bạn nếu bạn còn chơi ảnh thay tập tin.
^^! file ở #14 bạn xem dùm.. lúc mới làm thì được. khi tắt đi hôm sau mở lại thấy cột 2 dài ngoẵng ra không tài nào chỉnh lại đượcToàn hình (ảnh) thế này dễ lắm, dùng photoshop cắt dán kéo chuột mấy cái là xong, việc chi phải Excel
Làm thế nào để xuống dòng ở listbox khi chữ dài quá khổ cột bạn nhỉTrong code có không thì nhìn ảnh sao biết được? Mà nếu trong code đổi thành 100 thì phải có 100 chứ không thể 319 được.
Đã nói là cột 3, 4, 5 không có dữ liệu mà còn cãi.cột 3 4 5 có giá trị, cột 2 đang bị đẩy rộng ra nên ko nhìn thấy cột 3 4 5
MaxCol = .End(xlToRight).Column
msgbox MaxCol
Sub ganSourceListbox()
Dim k As Long
MaxCol = Range("A3").End(xlToRight).Column
MaxRow = Cells(Rows.Count, "A").End(xlUp).Row
For k = MaxRow To 4 Step -1
If Len(Range("A" & k).Value) Then Exit For
Next k
MaxRow = k
ArrayData = Range("A4").Resize(MaxRow - 3, MaxCol).Value
ReDim TempArr(1 To MaxRow - 3, 1 To MaxCol)
Me.lstDanhSachVPP.List = ArrayData
End Sub
vâng đúng rồi! mình vừa chỉnh lên dòng thứ 5 trở đi thì nó hiện lại chiều rộng cộtĐã nói là cột 3, 4, 5 không có dữ liệu mà còn cãi.
Nếu không tin thì sau dòng
thì thêm dòngMã:MaxCol = .End(xlToRight).Column
Sau đó mở Form sẽ có 2 trong MsgBox. Tức mảng chỉ có 2 cột -> trong ListBox chỉ 2 cột đầu có dữ liệu.Mã:msgbox MaxCol
Tôi đã sửa trong cửa sổ Properties thành 28 pt;100 pt;44 pt;59 pt;150 pt như mong muốn.
Và sửa lại thành
Mã:Sub ganSourceListbox() Dim k As Long MaxCol = Range("A3").End(xlToRight).Column MaxRow = Cells(Rows.Count, "A").End(xlUp).Row For k = MaxRow To 4 Step -1 If Len(Range("A" & k).Value) Then Exit For Next k MaxRow = k ArrayData = Range("A4").Resize(MaxRow - 3, MaxCol).Value ReDim TempArr(1 To MaxRow - 3, 1 To MaxCol) Me.lstDanhSachVPP.List = ArrayData End Sub
+Chỉnh dùm mình cột D định dạng ngăn cách phần đơn vị với như kiểu này 1000000 thành 1.000.000Đã nói là cột 3, 4, 5 không có dữ liệu mà còn cãi.
Nếu không tin thì sau dòng
thì thêm dòngMã:MaxCol = .End(xlToRight).Column
Sau đó mở Form sẽ có 2 trong MsgBox. Tức mảng chỉ có 2 cột -> trong ListBox chỉ 2 cột đầu có dữ liệu.Mã:msgbox MaxCol
Tôi đã sửa trong cửa sổ Properties thành 28 pt;100 pt;44 pt;59 pt;150 pt như mong muốn.
Và sửa lại thành
Mã:Sub ganSourceListbox() Dim k As Long MaxCol = Range("A3").End(xlToRight).Column MaxRow = Cells(Rows.Count, "A").End(xlUp).Row For k = MaxRow To 4 Step -1 If Len(Range("A" & k).Value) Then Exit For Next k MaxRow = k ArrayData = Range("A4").Resize(MaxRow - 3, MaxCol).Value ReDim TempArr(1 To MaxRow - 3, 1 To MaxCol) Me.lstDanhSachVPP.List = ArrayData End Sub
Bạn đã thấy là có những cái không thể phán trên cơ sở hình ảnh chưa?+Chỉnh dùm mình cột D định dạng ngăn cách phần đơn vị với như kiểu này 1000000 thành 1.000.000
và khi kích vào sẽ đi đến dòng có chứa giữ liệu đang chọn
+BoundColumn có tác dụng như nào bạn
ok! Mời mỗi anh em 1 chén hộ mình nhé..Bạn đã thấy là có những cái không thể phán trên cơ sở hình ảnh chưa?
Tôi đi nhậu đây. Nếu đợi được thì đến tối (chỗ tôi) tôi sẽ xem.
Tôi tưởng hình ảnh thì còn ngo ngoe photoshop, còn excel VBA chỉ cào cào làm sao đây......
^^! file ở #14 bạn xem dùm.. lúc mới làm thì được. khi tắt đi hôm sau mở lại thấy cột 2 dài ngoẵng ra không tài nào chỉnh lại được
...
Muốn thế thì sau khi lấy dữ liệu vào mảng ArrayData thì duyệt từng dòng của nó và định dạng thích hợp cho cột 4.+Chỉnh dùm mình cột D định dạng ngăn cách phần đơn vị với như kiểu này 1000000 thành 1.000.000
Nếu thế thì phải gán cho mỗi dòng dữ liệu trong mảng ArrayData, cũng đồng thời là trong ListBox, chỉ số dòng của nó trên sheet. Khi click mục trong ListBox thì đọc ra chỉ số dong trên sheet của mục được chọn. "Gán" được thực hiện bằng cách sau khi lấy dữ liệu vào mảng ArrayData thì duyệt từng dòng của nó và nhâp chỉ số dòng trên sheet của dòng hiện hành vào cột cuối cùng được thêm sau khi nhập dữ liệu vào ArrayData. Khi click thì đọc ra chỉ số dòng từ cột cuối. Thế thôi.và khi kích vào sẽ đi đến dòng có chứa giữ liệu đang chọn
Sub ganSourceListbox()
Dim k As Long
Dim lastRow As Long
With ThisWorkbook.Worksheets("Don Gia Nhan Cong")
MaxCol = .Range("A3").End(xlToRight).Column
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
If lastRow < 4 Then Exit Sub
' lastRow trong truong hop nay khong chua du lieu. Di len tren toi khi gap gia tri <> ""
For k = lastRow To 4 Step -1
If Len(.Range("A" & k).Value) Then Exit For
Next k
MaxRow = k - 3
' lay du lieu vao mang ArrayData
ArrayData = .Range("A4").Resize(MaxRow, MaxCol).Value
End With
' them 1 cot cuoi vao mang ArrayData
ReDim Preserve ArrayData(1 To UBound(ArrayData, 1), 1 To MaxCol + 1)
' duyet tung dong cua mang ArrayData
For k = 1 To UBound(ArrayData, 1)
' ghi chi so dong tren sheet cua muc hien hanh vao cot cuoi da them
ArrayData(k, MaxCol + 1) = k + 3
' dinh dang cot DON GIA
ArrayData(k, 4) = Format(ArrayData(k, 4), "#,##0.00") ' neu DON GI khong co phan thap phan thi Format(ArrayData(k, 4), "#,##0")
Next k
ReDim TempArr(1 To MaxRow, 1 To MaxCol)
' nhap mang ArrayData vao ListBox
Me.lstDanhSachVPP.List = ArrayData
End Sub
Private Sub lstDanhSachVPP_Change()
Dim r As Long
With lstDanhSachVPP
If .ListIndex < 0 Then Exit Sub
' doc ra chi so dong tren sheet cua muc duoc chon
r = .List(.ListIndex, MaxCol)
End With
' chon o o dong r va cot D
ThisWorkbook.Worksheets("Don Gia Nhan Cong").Range("D" & r).Select
End Sub
Tôi chả hiểu "Định dạng kẻ dòng list" là gì. Cũng chả biết "dòng list" là dòng gì. Hãy tập giải thích cho người khác, kể cả những người chậm hiểu như tôi, hiểu ý của mình. Vấn đề của mình mà muốn nhanh nhanh, tốn ít công sức thời gian thì tôi bó tay.+ Định dạng kẻ dòng list
Như bài #7 thôi: View -> Object Browser -> ListBox -> BoundColumn -> F1+BoundColumn có tác dụng như nào bạn
DIỄN ĐÀN GIẢI PHÁP EXCEL