Nhờ các bác hỗ trợ về thay đổi giá trị động của Macro (1 người xem)

  • Thread starter Thread starter vufsn
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

vufsn

Thành viên mới
Tham gia
21/8/12
Bài viết
9
Được thích
0
Tình hình là em cần làm 1 cái bảng biểu Excel có tác vụ lọc các giá trị trong 1 bảng ( đã nhập liệu )

Cách em lựa chọn là Auto Filter cho nó lành.

Nhưng vì muốn rút gọn thao tác thì em quyết tâm làm 1 cái Macro.

Xin phép mô tả thế này

ô I2 là ô nhập liệu.

sau khi nhập liệu thì chạy Marco để nó tự sử dụng Auto Filter lọc theo giá trị ở ô I2....

Vậy nhưng vấn đề nằm ở chỗ này :

191255_126264337518743_766887121_o.jpg


Giá trị mà cái Macro nó nhận được là giá trị tuyệt đối ( ở thời điểm làm macro là 0007 ) nên sau đó nó chỉ add giá trị 0007 đó vào Auto Filter. bất kể mình nhập liệu thay đổi thế nào.


Hix, bác nào biết tùy chỉnh cho nó nhận giá trị tương đối của ô đó hay ko ???


Chỉ em với :dead:


Rõ ràng là chọn copy sau khi chạy Macro mà ??
 
Lần chỉnh sửa cuối:
Dạ em có sợ gì đâu. em xin up ngay. Tại ở nhiều diễn đàn hạn chế băng thông và tài nguyên không cho up lên. Nên em không dám mạo muội thôi.

Nếu các bác mần hộ em luôn 1 cái macro copy được giá trị động động thì tốt quá.
 

File đính kèm

Dạ em có sợ gì đâu. em xin up ngay. Tại ở nhiều diễn đàn hạn chế băng thông và tài nguyên không cho up lên. Nên em không dám mạo muội thôi.

Nếu các bác mần hộ em luôn 1 cái macro copy được giá trị động động thì tốt quá.

Bạn copy code này vào chắc là được, thay đổi điều kiện lọc tại ô I1 nha. Xóa ô này thì sẽ không lọc nữa

Không hiểu bạn muốn copy cái gì nữa. Hỏng trúng thì làm lại sau
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [i1].Address Then
  AutoFilterMode = False
    With Range([a1], [h65536].End(3))
      If [i1] <> "" Then
        .AutoFilter 2, [i1]
        .SpecialCells(12).Copy
      Else
        .AutoFilter
      End If
    End With
End If
End Sub
 
Lần chỉnh sửa cuối:
Bạn copy code này vào chắc là được, thay đổi điều kiện lọc tại ô I1 nha. Xóa ô này thì sẽ không lọc nữa

Không hiểu bạn muốn copy cái gì nữa. Hỏng trúng thì làm lại sau
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [i1].Address Then
  AutoFilterMode = False
    With Range([a1], [h65536].End(3))
      If [i1] <> "" Then
        .AutoFilter 2, [i1]
        .SpecialCells(12).Copy
      Else
        .AutoFilter
      End If
    End With
End If
End Sub
sếp ơi, đoạn code đó copy vào đâu vậy ?
Thực ra cái " I2 " mà em muốn copy chỉ là cái mã nhân viên thôi ( ví dụ 0007, 0006, 0015... ) tại em muốn thay đổi I2 thì macro sẽ tự động dò theo giá trị mới ấy mà

------------------

Vẫn thế sếp ạ. Khi em thay giá trị ở ô I1 từ 0007 thành 0008 thì kết quả lọc vẫn ra 0007 ( tức là macro nó vẫn nhận giá trị tuyệt đối khi record là 0007 chứ không phải là " I1 ")
 
Lần chỉnh sửa cuối:
sếp ơi, đoạn code đó copy vào đâu vậy ?
Thực ra cái " I2 " mà em muốn copy chỉ là cái mã nhân viên thôi ( ví dụ 0007, 0006, 0015... ) tại em muốn thay đổi I2 thì macro sẽ tự động dò theo giá trị mới ấy mà

------------------

Vẫn thế sếp ạ. Khi em thay giá trị ở ô I1 từ 0007 thành 0008 thì kết quả lọc vẫn ra 0007 ( tức là macro nó vẫn nhận giá trị tuyệt đối khi record là 0007 chứ không phải là " I1 ")

Xem file đính kèm nghen
 

File đính kèm

Góp ý với bạn như sau: Nên để ô I1 chứa điều kiện lọc như code bác quanghai1969 vì ô I2 sẽ bị ẩn trong quá trình lọc. Bạn muốn lọc theo một giá trị tương đối thì tham chiếu vào ô, khi giá trị ô thay đổi thì điều kiện lọc thay đổi. Chỉ cần sửa code như sau:
Mã:
ActiveSheet.Range("$A$1:$H$10").AutoFilter Field:=2, Criteria1:=Range("I2")
 
Góp ý với bạn như sau: Nên để ô I1 chứa điều kiện lọc như code bác quanghai1969 vì ô I2 sẽ bị ẩn trong quá trình lọc. Bạn muốn lọc theo một giá trị tương đối thì tham chiếu vào ô, khi giá trị ô thay đổi thì điều kiện lọc thay đổi. Chỉ cần sửa code như sau:
Mã:
ActiveSheet.Range("$A$1:$H$10").AutoFilter Field:=2, Criteria1:=Range("I2")

Vâng cám ơn bác.

Em còn rất gà, sẽ còn nhờ vả các bác nhiều ạ
 
Web KT

Bài viết mới nhất

Back
Top Bottom