Hàm ClearEvent - Xóa dữ liệu linh hoạt cho Excel (Giữ trạng thái Undo và Redo) (2 người xem)

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

HeSanbi

Thành viên gắn bó
Thành viên bị đình chỉ hoạt động
Tham gia
24/2/13
Bài viết
2,897
Được thích
4,680
Giới tính
Nam
Bài viết không đủ trình độ chia sẻ trợ giúp trên diễn đàn, bài viết đã được xóa.
 
Lần chỉnh sửa cuối:
Giải pháp
Mã nguồn xử lý bộ nhớ tỷ mĩ. Xử lý tính toán khi Excel tính toán đầy đủ không thiếu mili nào.
Mã nguồn đã phòng ngừa tối đa khả năng sập excel.
Tất cả được xử lý trong mã phòng hầu hết tất cả trường hợp xảy ra.

Đa số mã đã được tối ưu hóa, xử lý unicode. Để đạt được tốc độ xử lý cao nhất. Mặc dù VBA chạy đơn luồng.
Khi Excel tính toán, các đối số nằm trong hàm được tính toán trước. Nên hàm ClearEvent chỉ gọi một lần duy nhất và được xử lý để tránh tính toán.

Giải phóng bộ nhớ được xử lý vô cùng tỷ mĩ để tránh gây lỗi Out of memory trong một số trường hợp dữ liệu lớn.
Trong quá trình viết mã, thông số bộ nhớ RAM được kiểm tra khi chạy để tránh quá tải bộ nhớ. Đây là điều quan trọng khi xử lý dữ liệu trong lập trình.

Các kỹ...
Những hàm kiểu như này ở C# viết dễ dàng hơn (với trợ giúp của AI). Hóng code của tác giả với kỹ thuật sử dụng settimer và killtimer
 
Upvote 0
*** Cập nhật mã nguồn phiên bản đầu tiên
Đã có, gồm:
Thiết lập xóa dữ liệu, xóa biểu thức, xóa ô gộp, xóa dòng trống.
Chưa có, gồm: Xóa có điều kiện, xóa dòng chọn, xóa vùng chọn, xóa ô trống đơn lẻ trong cột.
 
Upvote 0
trình độ của tác giả siêu cao, nhưng mã lệnh thao tác ở dạng hàm thì siêu khó dùng
 
Upvote 0
Bạn chỉ cần gõ: =ClearEvent(A3:Z10000) là xong rồi
Tiếp theo là cần xóa phức tạp hơn thì thêm thiết lập vào. Nó khó chỗ nào vậy bạn.
 
Upvote 0
Những hàm kiểu như này ở C# viết dễ dàng hơn (với trợ giúp của AI). Hóng code của tác giả với kỹ thuật sử dụng settimer và killtimer
Hàm bảng tính chỉ nên dùng để cho ra giá trị tính toán thôi, nhét UI vào kiểu này chỉ cản trở Excel tính toán thôi, nhất là khi cần tính toán lại những ô có công thức, chưa kể nguy cơ rò bộ nhớ và thậm chí là sập Excel.
 
Upvote 0
Mã nguồn xử lý bộ nhớ tỷ mĩ. Xử lý tính toán khi Excel tính toán đầy đủ không thiếu mili nào.
Mã nguồn đã phòng ngừa tối đa khả năng sập excel.
Tất cả được xử lý trong mã phòng hầu hết tất cả trường hợp xảy ra.

Đa số mã đã được tối ưu hóa, xử lý unicode. Để đạt được tốc độ xử lý cao nhất. Mặc dù VBA chạy đơn luồng.
Khi Excel tính toán, các đối số nằm trong hàm được tính toán trước. Nên hàm ClearEvent chỉ gọi một lần duy nhất và được xử lý để tránh tính toán.

Giải phóng bộ nhớ được xử lý vô cùng tỷ mĩ để tránh gây lỗi Out of memory trong một số trường hợp dữ liệu lớn.
Trong quá trình viết mã, thông số bộ nhớ RAM được kiểm tra khi chạy để tránh quá tải bộ nhớ. Đây là điều quan trọng khi xử lý dữ liệu trong lập trình.

Các kỹ thuật viết mã tối ưu hóa được áp dụng.

Mã nguồn có sử dụng một kỹ thuật Wrap hoán đổi con trỏ bộ nhớ để tránh sập Excel khi gọi SetTimer. Tuy nhiên khả năng sập xảy ra nếu lập trình mã sửa đổi mã mà không hoàn tác.

Đọc thêm bài viết xử lý bộ nhớ để biết cách tôi xử lý bộ nhớ trong mã

https://www.giaiphapexcel.com/diendan/threads/174765/
https://www.giaiphapexcel.com/diendan/threads/171901/
 
Lần chỉnh sửa cuối:
Upvote 0
Giải pháp
Mã nguồn xử lý bộ nhớ tỷ mĩ. Xử lý tính toán khi Excel tính toán đầy đủ không thiếu mili nào.
Mã nguồn đã phòng ngừa tối đa khả năng sập excel.
Tất cả được xử lý trong mã phòng hầu hết tất cả trường hợp xảy ra.

Đa số mã đã được tối ưu hóa, xử lý unicode. Để đạt được tốc độ xử lý cao nhất. Mặc dù VBA chạy đơn luồng.
Khi Excel tính toán, các đối số nằm trong hàm được tính toán trước. Nên hàm ClearEvent chỉ gọi một lần duy nhất và được xử lý để tránh tính toán.

Giải phóng bộ nhớ được xử lý vô cùng tỷ mĩ để tránh gây lỗi Out of memory trong một số trường hợp dữ liệu lớn.
Trong quá trình viết mã, thông số bộ nhớ RAM được kiểm tra khi chạy để tránh quá tải bộ nhớ. Đây là điều quan trọng khi xử lý dữ liệu trong lập trình.

Các kỹ thuật viết mã tối ưu hóa được áp dụng.

Mã nguồn có sử dụng một kỹ thuật Wrap hoán đổi con trỏ bộ nhớ để tránh sập Excel khi gọi SetTimer. Tuy nhiên khả năng sập xảy ra nếu lập trình mã sửa đổi mã mà không hoàn tác.

Đọc thêm bài viết xử lý bộ nhớ để biết cách tôi xử lý bộ nhớ trong mã

https://www.giaiphapexcel.com/diendan/threads/174765/
https://www.giaiphapexcel.com/diendan/threads/171901/
Cứ nói lý thuyết nhiều làm gì, chạy thử hàm khoảng vài trăm, vài nghìn lần trong bảng tính là biết kết quả liền.
 
Upvote 0
Nhà giàu hay sao chạy dữ thần. Chắc máy tính rãnh không biết chuyện gì làm.
Chrome dùng cả ngày cũng phải đóng tab, Runtime Giải phóng.

Máy tính rãnh mở hàng ngàn Tab chrome lên chơi. Xem máy xịn mức nào.

Ngôn từ chưa đủ trình.

Xóa dữ liệu 5, 15, 50 phút xóa lần. Cho nó vui. Gõ phím mạnh dữ.

Mã UTF8 còn chưa biết. Vào bàn chuyện nên thì tiếp tục câu chuyện. Thể hiện trình gì ở đây. "UFT8 là bug của VBA".
 
Upvote 0
Nhà giàu hay sao chạy dữ thần. Chắc máy tính rãnh không biết chuyện gì làm.
Chrome dùng cả ngày cũng phải đóng tab, Runtime Giải phóng.

Máy tính rãnh mở hàng ngàn Tab lên chơi. Xem máy xịn mức nào.

Ngôn từ chưa đủ trình.
Trình như chuyên gia này thì đúng là không ai với tới được, trình nói phét lác là giỏi, chia sẻ kiến thức còn sai lè ra chỉ giỏi lừa bịp người không biết thôi.
Không làm được thì cứ nói thẳng ra mình không đủ trình độ, khỏi cần vòng vo.
 
Upvote 0
Kém được giải trình cho hiểu. Còn tự kỷ. Đi hỏi hết thế giới xem có ai rãnh rỗi đi xóa vùng dữ liệu chạy hàng ngàn lần không. Dân lập trình mà nói cái này. Chắc chưa ai dạy cho bài học.
Bài học nhỏ học chưa nên đòi học bài học lớn. Chưa nhận thức được cái "chơi ngiu" nữa hả trời.

Nói nói mắc công những người đang học VBA vào thử chạy hàng ngàn lần là "chết toy".
 
Upvote 0
Kém được giải trình cho hiểu. Còn tự kỷ. Đi hỏi hết thế giới xem có ai rãnh rỗi đi xóa vùng dữ liệu chạy hàng ngàn lần không. Dân lập trình mà nói cái này. Chắc chưa ai dạy cho bài học.
Bài học nhỏ học chưa nên đòi học bài học lớn. Chưa nhận thức được cái "chơi ngiu" nữa hả trời.

Nói nói mắc công những người đang học VBA vào thử chạy hàng ngàn lần là "chết toy".
Dốt nát mà không chịu nhận, đúng là nực cười.
Cũng cảnh báo luôn mấy bạn đọc ở đây, nên đọc thật kỹ trước khi làm theo những gì người ta nói nhé.
 
Upvote 0
@OverAC Diễn đàn có thanh niên thể hiện trình độ cao, nên cho 5 sao hay 15 sao vậy
Vô thấy hén tự nói hén "ngiu" với "dốt" không thấy góp ý phát triển, đóng góp ý kiến.

Theo tôi thì cho 5 sao. Vì giỏi giang. Vì học chửi chứ hén không "học văn học dân gian".
Nhà chắc giàu "dốt" nên đi khoe khoan khắp nơi.
Hén không biết UTF8 tự đăng bài xong tự chửi luôn. Tui không trách. Mà giờ đi khoe nữa. Tui chịu.
Hén còn chưa phân biệt đúng sai. Làm sao tui có điều hay mà chỉ hén được.
 
Upvote 0
@OverAC Diễn đàn có thanh niên thể hiện trình độ cao, nên cho 5 sao hay 15 sao vậy
Vô thấy hén tự nói hén "ngiu" với "dốt" không thấy góp ý phát triển, đóng góp ý kiến.

Theo tôi thì cho 5 sao. Vì giỏi giang. Vì học chửi chứ hén không "học văn học dân gian".
Nhà chắc giàu "dốt" nên đi khoe khoan khắp nơi.
Hén không biết UTF8 tự đăng bài xong tự chửi luôn. Tui không trách. Mà giờ đi khoe nữa. Tui chịu.
Trả lời không được xong chơi bài cùn gọi người lớn đến khóa mõm người khác à, đang chờ ở bài kia đây. Không biết gì cứ nhận đi, ai nói gì đâu.
 
Upvote 0
UTF8 còn chưa biết, giờ nói gì giờ. Có khi còn không hiểu mấy từ tiếng Việt nữa. Bố phiên dịch cũng chịu thua.
Kêu người cho sao, đánh giá 5 sao còn chửi nữa trời.

Hén còn chưa phân biệt được cái gì đúng sai nữa trời.

Tui viết nguyên cả bài viết, tạo trình xóa dữ liệu. Hắn kêu tui phéc. Mà hén không có một đoạn mã nào đưa ra để chứng minh tui phéc.
Nói có sách mách có chứng.

Do tui rãnh, nên ở đây tui chơi với hén, cho vui. Xem trình dốt đến mức nào để né.
 
Upvote 0
Bạn có thể làm một demo thế này xem thế nào?
+ Record Macro: thực hiện các hành động chèn, xóa dòng, cột, tạo hình ảnh, format nền, viền, chữ,.....
+ Dùng thư viện code này của bạn, đặt vào macro đã record.
+ Thực hiện undo bằng CTRL+Z hoặc có nút bấm cũng được.
 
Upvote 0
Không hiểu ý của anh mục đích demo này để làm gì, nó có gây vấn đề do mã trên gây ra điều gì không?
Tất cả các hành động trên đều có thể Undo. Nếu viết mã theo phương pháp khó hơn.

Chắc ý của anh là làm cho mất trạng thái undo. Xong để trình ClearEvent có thể Undo. Điều này là không đúng. Việc làm mất Undo là do thao tác khác, hành động khác làm mất. Còn ClearEvent không liên quan gì đến chúng.

ClearEvent làm cơ chế xóa dữ liệu mong muốn nhưng không làm mất trạng thái hoàn tác trước đó của người dùng. Có nghĩa là những gì Excel lưu hoàn tác đều có thể hoàn tác.
 
Lần chỉnh sửa cuối:
Upvote 0
Không hiểu ý của anh mục đích demo này để làm gì, nó có gây vấn đề do mã trên gây ra điều gì không?
Tất cả các hành động trên đều có thể Undo. Nếu viết mã theo phương pháp khó hơn.

Vì thấy bạn có thể làm undo với một số lệnh chỉ định trong bài số #1. Mình muốn xem khả năng của giải pháp này có thể thực hiện cho những nhu cầu đa dạng không. Qua đây cũng xem tính phức tạp đến đâu?
 
Upvote 0
À, vậy em sẽ tạo một demo cho tất cả các đối tượng cho anh xem, rồi anh tự hiểu cơ chế là được
Anh chưa bao giờ thấy lệnh VBA gọi lệnh tạo Shape mà không làm mất Undo.
Vậy đây xem như màn trình diễn kỹ thuật xử lý đối tượng cấp cao trong VBA.

Vậy anh xem qua hàm TipView, nó là một hàm tạo Tip cũng không làm mất trạng thái Undo và Redo
 
Upvote 0
Kỹ thuật không mất undo có áp dụng được với bài toán tạo form tìm kiếm sản phẩm, tìm thấy thì trả mã sản phẩm xuống ô không bạn
 
Upvote 0

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

Back
Top Bottom