XD360 KÍNH CHÚC CHO MỌI NHÀ VẠN SỰ AN LÀNH!

Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng

 Quên mật khẩu
 Đăng ký mới
Anh Trần HòeBùi Quốc Hưng
Xem: 13765|Trả lời: 15
Thu gọn cột thông tin

[Hỏi] Code VBA dùng chức năng filter trong excel

[Lấy địa chỉ]
longriver28284 Đăng lúc 14/8/2014 13:40 | Xem tất |Chế độ đọc

Hãy đăng nhập để có nhiều chức năng hữu dụng hơn và xem ảnh rõ hơn!

Bạn phải đăng nhập để xem được nội dung, nếu bạn chưa có tài khoản? hãy Đăng ký mới

x
Mình có một file excel định mức dự toán như đính kèm, tại cột H có một Text box.
Mình muốn dùng code VBA để khi nhập mã định mức vào text box thì sẽ lọc các dòng mà  tại cột A có chứa giá trị bằng giá trị nhập vào ở text box.
Rất mong sự giúp đỡ của các bạn
DINH MUC.xls (8.27 MB, Lượt tải về: 1772)

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhungdao12a3 Đăng lúc 14/8/2014 21:03 | Xem tất
Bạn gõ mã định mức vào ô H2 xem sao:
Guidm.rar (959.74 KB, Lượt tải về: 2268)

Đánh giá

Chia sẻ hay! Thanks bạn nhé!: 5.0
Chia sẻ hay! Thanks bạn nhé!: 5
Mình hứa sẽ trả lời yêu cầu này. Đang bận thôi.  Đăng lúc 15/8/2014 00:11

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhoe Đăng lúc 14/8/2014 21:23 | Xem tất
tranhungdao12a3 gửi lúc 14/8/2014 21:03
Bạn gõ mã định mức vào ô H2 xem sao:

Trường hợp hay hơn nữa là khi bạn gõ một hoặ ...

Cảm ơn Bạn đã tin tưởng! Tuy nhiên những bài viết sau này Bạn không nên nêu đích danh như thế!.
Mình hay A Fubi cũng tập tễnh đi vào VBA, chỉ muốn truyền kinh nghiệm cho các Bạn trong DĐ được cái gì thì hay cái đó thôi, khỏi phải chạy quanh chạy co rồi mới đến đích.
Thanks!

Đánh giá

em nhất trí! Do khoản này trên diễn đàn không có ai chia sẻ ngoài anh và anh Fubi.  Đăng lúc 14/8/2014 22:19

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhungdao12a3 Đăng lúc 17/8/2014 17:22 | Xem tất
Bạn xài với autofilter, do advancedFilter lỗi dữ liệu trên 10000 dòng: copy code sau vào sheet(DM)
[Visual Basic] 纯文本查看 复制代码
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lr As Long
With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
    .EnableEvents = False
End With
If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
  Lr = Cells(Rows.Count, 1).End(xlUp).Row
  Range("A1:G" & Lr).AutoFilter 1, [h1]
With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
    .EnableEvents = True
End With
End Sub


Đánh giá

Chia sẻ hay! Thanks bạn nhé!: 5.0
Bạn ý hỏi TextBox nhưng e chưa học tới đoạn Form!  Đăng lúc 17/8/2014 22:41
Chia sẻ hay! Thanks bạn nhé!: 5
Hứa sẽ trả lời nhưng chưa thu xếp T.gian. Cảm ơn trước đã nhé.  Đăng lúc 17/8/2014 22:22

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

fast_furious Đăng lúc 18/8/2014 10:09 | Xem tất
Thật khâm phục bác Tranhoe khi đọc thông tin bác năm nay đã ngoài 50t. Ở độ tuổi của bác mà có trình độ về công nghệ thông tin (Excel, VBA..) như vậy chắc hẳn bác phải bỏ rất nhiều công sức và lỗ lực mới có thể đạt được. Mong bác tiếp tục chia sẻ kinh nghiệm dẫn dắt các em trở thành chuyên nghiệp.
tks!

Số người tham gia 1Thanked +2 Thu lại Lý do
tranhoe + 2 Cảm ơn quan tâm của bạn nhiều!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhoe Đăng lúc 18/8/2014 11:18 | Xem tất
tranhungdao12a3 gửi lúc 14/8/2014 21:03
Bạn gõ mã định mức vào ô H2 xem sao:

Trường hợp hay hơn nữa là khi bạn gõ một hoặ ...

Tranh thủ thời gian nên viết xong code cho TextBox1. Không dùng filter, chỉ dùng Find trong VBA.
Gõ một hoặc nhiều ký tự bất kỳ vào TextBox1 thì VBA tự lọc và đi đến dòng chứa ký tự đó tại cột A cho bạn (để ý mới thấy nhé vì chưa được actve). Trong khi đó con trỏ vẫn nằm trong TextBox1. Thú vị là khi bạn gõ 2 ký tự thì tự nó thêm dấu chấm "." vào sau (mã định mức) và nó cũng tự viết hoa trong TextBox1.
Khi không muốn gõ trong TextBox1 nữa (đạt được yêu cầu) thì Bạn nhấn phím "ESC", cell tìm thấy tự động active cho Bạn ngay.
Code:
[Visual Basic] 纯文本查看 复制代码
Private Sub TextBox1_Change()
     Dim Sh As Worksheet
     Dim rNguon As Range, rKqua As Range
     Dim MaHieu As String
     If Len(TextBox1) = 2 Then TextBox1 = TextBox1 & "."
     TextBox1 = UCase(TextBox1)
     MaHieu = TextBox1.Value
     If MaHieu = "" Then Exit Sub
     Set Sh = ThisWorkbook.Sheets("DM")
     Set rNguon = Range(Sh.[A2], Sh.[A65536].End(xlUp))
     Set rKqua = rNguon.Find(MaHieu, , xlFormulas, xlPart)
     If rKqua Is Nothing Then GoTo Thoat
     rKqua.Activate
     TextBox1.Activate
Thoat:
    'Giai phong bo nho
     Set Sh = Nothing
     Set rNguon = Nothing
     Set rKqua = Nothing
End Sub

Đính kèm: DINH MUC.xls (8.28 MB, Lượt tải về: 1921)

Số người tham gia 1Thanked +2 Thu lại Lý do
tranhungdao12a3 + 2 Chuyên nghiệp. Cảm ơn!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhungdao12a3 Đăng lúc 18/8/2014 14:38 | Xem tất
tranhoe gửi lúc 18/8/2014 11:18
Tranh thủ thời gian nên viết xong code cho TextBox1. Không dùng filter, chỉ dùng Find tron ...

Tình hình là em muốn ẩn tất cả các dòng không thỏa mãn điều kiện:
Em thêm 2 dòng code dưới sau dòng code:      rKqua.Activate của anh
     rNguon.Rows.Hidden = False
     Range(Sh.[a2], rKqua.Offset(-1)).Rows.Hidden = True
THì nó ẩn các dòng từ A2 tới trước Dòng Find chứa mã hiệu đầu tiên
Tuy nhiên để hiện các dòng thỏa mãn Find(Mã hiệu) và ẩn các dòng sau các dòng trên tới dòng cuối cùng có dữ liệu thì chưa được. Anh chỉ giùm đoạn sau cho em với!
Thaks anh!

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhoe Đăng lúc 18/8/2014 16:57 | Xem tất
tranhungdao12a3 gửi lúc 18/8/2014 14:38
Tình hình là em muốn ẩn tất cả các dòng không thỏa mãn điều kiện:
Em thêm 2 dòng  ...

Để Tối A viết.
Không hiểu ý đồ như thế để làm gì?

Đánh giá

Em đang học VBA, với lại khi các mã hiệu thỏa mãn mà nhiều chiếm hết màn hình, ẩn các mã không thỏa mãn cho dễ nhìn.  Đăng lúc 19/8/2014 08:28

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

tranhoe Đăng lúc 19/8/2014 11:50 | Xem tất
tranhungdao12a3 gửi lúc 18/8/2014 14:38
Tình hình là em muốn ẩn tất cả các dòng không thỏa mãn điều kiện:
Em thêm 2 dòng  ...

Thêm biến i để đếm số Dòng thỏa điều kiện, thêm vào trước lệnh "rKqua.Activate" đoạn code sau
[Visual Basic] 纯文本查看 复制代码
     i = 1
     Do Until Left$(rKqua.Offset(i), iKyTu) <> MaHieu
        i = i + 1
     Loop
     rNguon.Rows.Hidden = False
     Range("A2", rKqua.Offset(-1)).Rows.Hidden = True
     Range(rKqua.Offset(i), "A" & lDong).Rows.Hidden = True

Đính kèm: DINH MUC.rar (964.63 KB, Lượt tải về: 3363)

Số người tham gia 1Thanked +2 Thu lại Lý do
tranhungdao12a3 + 2 Chuyên nghiệp. Cảm ơn!

Xem tất cả

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

ThaoN Đăng lúc 24/1/2018 09:08 Từ di động | Xem tất
Nhưng ví dụ như file định mức đó ở cột A. Có một mã xuất hiện nhiều dòng. Nhờ anh viết dùm code . Để khi nhập mã đó vào textbox thì bảng sẽ xuất hiện tất cả những dòng  chứa mã đó và ẩn dòng không phải mã đó. Cám ơn các bạn .

Đánh giá

gửi file lên nói chay vậy k được bạn ơi.  Đăng lúc 24/1/2018 09:46

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

Phiên bản Mobile|Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng  

Phần mềm dự toán xây dựng excel | Hướng dẫn lập dự toán xây dựng | Phần mềm tư vấn giám sát | Phần mềm quản lý chất lượng xây dựng |

Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng

Phần mềm ôn thi sát hạch chứng chỉ hành nghề Kiến Trúc sư

Phần mềm ôn thi sát hạch chứng chỉ hành nghề Đấu thầu

GMT+7, 16/6/2024 04:38 , Processed in 0.157766 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Kiso Comsenz Inc.