Nhờ giả thích về VBA - hoạt động khó hiểu

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

phuongc5

Thành viên hoạt động
Tham gia
26/10/07
Bài viết
146
Được thích
71
Nghề nghiệp
Kế toán
Mình có download 1 file trên diễn đàn (không nhớ của ai). Trong file có viết VBA, nó hoạt động kỳ quặc kiểu gì ấy, không thể hiểu nổi, khiến mình cứ loay hoay mãi. Hiện tượng là, tại bất kỳ sheet nào, nếu mình gõ nội dung vào 1 ô (số hoặc chữ) xong ấn Enter thì nó giấu đi mất mấy trăm hàng mà sau đó mình Unhide cung không ra, rồi Filter/ShowAll cũng không được. Rất mong được giúp đỡ! (hihi, tham gia diễn đàn đã lâu nhưng không biết về VBA, xin hãy chê trách nhẹ nhẹ)
Chân thành cảm ơn!
 

File đính kèm

Lần chỉnh sửa cuối:
Mình có download 1 file trên diễn đàn (không nhớ của ai). Trong file có viết VBA, nó hoạt động kỳ quặc kiểu gì ấy, không thể hiểu nổi, khiến mình cứ loay hoay mãi. Hiện tượng là, tại bất kỳ sheet nào, nếu mình gõ nội dung vào 1 ô (số hoặc chữ) xong ấn Enter thì nó giấu đi mất mấy trăm hàng mà sau đó mình Unhide cung không ra, rồi Filter/ShowAll cũng không được. Rất mong được giúp đỡ! (hihi, tham gia diễn đàn đã lâu nhưng không biết về VBA, xin hãy chê trách nhẹ nhẹ)
Chân thành cảm ơn!
Hiện trạng file của bạn:
Calculation = Automatic
Trong file bạn có name này:
Mã:
DMTK=OFFSET(cdtk!$B$12,,,93,1)
Sheet Socai có ComboBox1, ComboBox này được thiết lập Properties như sau:
Mã:
...
ListFillRange=DMTK
...
Sheet BKEN có ComboBox2, ComboBox này được thiết lập Properties như sau:
Mã:
...
ListFillRange=DMTK
...
Code của sheet BKEN:
Mã:
Private Sub ComboBox1_Change()
On Error Resume Next
    ActiveSheet.Range("$A$5:$H$259").AutoFilter Field:=4, Criteria1:="<>"
...
End Sub
Code của sheet BKEN:
Mã:
Private Sub ComboBox2_Change()
On Error Resume Next
    ActiveSheet.Range("$A$12:$X$621").AutoFilter Field:=5, Criteria1:="<>0", _
    Operator:=xlAnd
...
End Sub

Đây là cái mà bạn nói là hoạt động khó hiểu:
Do Calculation đang được thiết lập là Automatic nên khi bạn nhập liệu vào một ô tất cả các công thức sẽ được tính toán lại (cả công thức trên bảng tính và công thức trong name).

Lúc này, name DMTK là một công thức nên nó sẽ được tính toán lại dù kết quả không có gì thay đổi nhưng khi tính toán lại excel vẫn hiểu là nó đã thay đổi (Chỗ này không hiểu tác giả file này muốn gì mà lại tạo name DMTK như thế, hàm Offset() chẳn có tác dụng gì trong name DMTK cả. Cứ định nghĩa name DMTK = cdtk!$B$12:$B$104 có phải là khỏi rắc rối không)

DMTK thay đổi làm ComboBox1 và ComboBox2 thay đổi (Dù thật ra nó chẳng thay đổi gì)

ComboBox1 và ComboBox2 thay đổi làm các thủ tục ComboBox1_Change() và ComboBox2_Change() thực thi. Code của 2 thủ tục này lại thực hiện AutoFilter ở ActiveSheet.

Bạn chú ý những chỗ màu đỏ. Sai lầm là ở những chỗ này và muốn khắc phục thì cũng khắc phục từ những chỗ này.
 
Upvote 0
Web KT

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

Back
Top Bottom