Xin hỏi các thầy và các anh chị có VBA nào để giảm sự nhấp nháy do Conditional Formating gây nên không ạ!
Vì file mà chứa nhiều Conditional Formating sẽ rất chậm chạp.
Xin hỏi các thầy và các anh chị có VBA nào để giảm sự nhấp nháy do Conditional Formating gây nên không ạ!
Vì file mà chứa nhiều Conditional Formating sẽ rất chậm chạp.
Má ơi, file của bạn chứa mấy trăm sheet, lại nhiều công thức, không "nhấp nháy" mới lạ đó
- Hoặc là bạn nghĩ lại việc bố trí dữ liệu sao cho nó nhẹ bớt
- Hoặc là bạn đừng dùng Conditonal Formating
Nhưng mà thưa thầy!
Em thử rồi có file chỉ có 100sheet thôi nếu không dùng Conditonal Formating thì cũng bình thường mà.
tại cái Conditonal Formating là chính thầy ạ! Thầy có phương thuốc nào không ạ! hix.
Có lẽ đây là một vấn đề nan giải,thầy ạ!
Nếu bỏ Conditonal Formating thì không phát huy hết được khả năng vốn có của Exel.
Em cũng không còn cách bố trí kiểu khác được nữa như thế này cũng tương đối rồi ạ.
Ngại nhất là vấn đề phát sinh thêm sheet.
Thưa thầy nếu dùng Conditonal Formating chỉ có 1 sheet thì vẫn nhấp nháy thầy ạ!
Nói thật, vấn đề của bạn tôi chẳng biết phải sửa thế nào! Vì nếu buộc phải sửa chắc tôi phải.. làm lại toàn bộ quá (dữ liệu quá nhiều, tôi không đủ sức)
/-)ầu tiên xin biếu bạn macro này, như là cái bắt tay làm quen
PHP:
Option Explicit
Sub ReName()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
Sh.Name = "C" & Right("00" & CStr(Sh.Index), 3)
Next Sh
End Sub
Có lẻ sau dó là chuyện thảo luận đến các trang tính của bạn:
Hiện tại các trang tính chỉ không quá 120 dòng, Vậy với E2003 mà mình đang xài, bạn có thể nhốt
6 vạn / 150 sẽ có thể thay 400 trang tính của bạn;
(/ậy bạn hãy cho biết lí do sao lại không thuận theo kiểu này?
(*) Hình như lí do thấp thoáng đâu đó sẽ là vùng in;
Đã vậy bạn nên xài macro, để khi cần in vùng nào thí macro sẽ giúp bạn chuyển vùng dữ liệu đó sang trang tính chuyên để in ấn
Thường các CSDL lớn, người ta nhốt chung dữ liệu thô 1 chổ & khi cần cái nào thì lấy cái nớ ra, thêm mắn muối hành tỏi & gia vị khác; Sau đó đem chiên, luột hay sào, nướng, thậm chí bỏ vô nồi áp suất hầm hay lò vi ba,. . . . để bày ra bàn đãi khách hay tự đãi cho gia đình hằng ngày.
Còn cách làm của bạn hiện tại thì chưa tận dụng thế mạnh của VBA 1 cách dứt khoát. Mà chỉ là đến cuối đường hầm rồi tịt, nên không dám đổi cấu trúc dữ liệu nữa!
Bạn hãy nêu lí do tại sao không gộp các trang tính í lại đi; chúng ta sẽ thảo luận thêm;
(hứ như CSDL của bạn bây chừ thì vô fương có cảm hứng giúp bạn. . . . .
Bài dài em không kèm trích dẫn của các thầy nữa.
Thầy ơi thầy có nói quá không vậy? Mọi vấn đề trên diễn đàn cũng không hẳn là dành cho riêng ai một ai đâu ạ!
Biết đâu nhiều người cũng đang cần các thầy giải dùm cho vấn đề này ạ.
không luvs này thì lúc khác sẽ dùng đến. không dùng đến thì cũng chẳng sao vì vấn đề này cũng rất cần thiết trong Ex thầy ạ.
Vâng!Trước hết em xin cảm ơn các thầy đã cố gắng bày tỏ quan điểm một cách nhiệt tình như vậy.
Em thì mới tiếp xúc với Ex nên cũng không hiểu jì nhiều nếu có jì sai sót mong các thầy đừng cười.
Theo như các thầy nói em thấy cũng hợp lý tại sao ta không gộp tất cả các sheet lại để làm trên 1 Sheet có như thế có fải nhẹ nhàng không?
Em cũng chưa biết là làm theo cách đó File có nhẹ hơn nhiều không? Nhưng theo nhìn nhận của em khi gộp lại thành 1 sheet như vậy thì số lượng ô fải nhập dữ liệu và ô chứa công thức cũng không thay đổi thậm chí giữ nguyên như số lượng Sheet của bảng tính trên.
Còn em fải làm như vậy là sở dĩ em đang nghĩ cách để tạo thêm 1 Sheet tổng hợp tạm gọi là sheet “Danh sách & tổng hợp” Khi nhập từng tên sản phẩm này vào thì dữ liệu tự động link đến các tiêu đề tên trong mỗi sheet và mỗi dòng sản phẩm ở sheet tổng hợp ta cũng tạo đường linh đến các Sheet con.Các sheet con này dung để nhập dữ liệu sau đó lại link về bảng tổng hợp theo từng dòng và theo hạng mục đó.
Theo em làm như thế này nếu có vấn đề gì cần sừa chữa ta có thể Giữ phím Shift sheet1 đến sheet n và có thể sửa hàng loạt được. còn tổng hợp gộp theo một sheet thì rất khó làm như vậy trừ khi ở các vùng khác ta tạo hàm tham chiếu theo 1 vùng cố định chỉ cần sửa vùng đó thif các vùng khác cũng thay đổi theo.
Đó là lý do em thiết kế bảng dữ liệu như vậy? Các thầy xem không hợp lý thì chỉ cho em.
Vì Sheet này ngày 1 tăng khi có thêm 1 Sản phẩm mới.
Em xin hỏi thầy code trên đặt ở đâu ạ. em insert modul đặt nó vào thì không thấy hiệu quả lắm.
Hay là đặt nó trong thisworkbook ạ!
Nhưng theo nhìn nhận của em khi gộp lại thành 1 sheet như vậy thì số lượng ô fải nhập dữ liệu và (1) ô chứa công thức cũng không thay đổi thậm chí giữ nguyên như số lượng Sheet của bảng tính trên.
Còn em fải làm như vậy là sở dĩ em đang nghĩ cách để tạo thêm 1 Sheet tổng hợp tạm gọi là sheet “Danh sách & tổng hợp” Khi nhập từng tên sản phẩm này vào thì dữ liệu tự động link đến các tiêu đề tên trong mỗi sheet và mỗi dòng sản phẩm ở sheet tổng hợp ta cũng tạo
Sao lại bắt CSDL chứa công thức? Công thức có fải bất di bất dịch đâu?
Bạn có thể mường tượng như thế này:
Lấy 1 trang tính làm form nhập cho ca hay cho SF nào đó;
Nhập lên đó ta thấy rõ ràng các DL (dữ liệu) (Tránh được sai sót) & khi nhập xong ta ẻn 1 fát toàn bộ DL sẽ được macro chuyển vô CSDL, lúc này toàn CSDL chỉ là DL không còn công thức nào mang theo từ bên Form nhập liệu;
Còn khi cần báo cáo nào thuộc ca, SL hay hư hỏng từng ngày, tuần thậm chí thống kê ra từng loại hư hỏng trong tháng còn được nữa là.
Lúc đó các macro sẽ trích lọc các sô` liệu iêu cầu đưa ra trang tính Report; Ở trang này sẽ giống như trang (Form) để in khi cần thiết.
Nhưng cũng hỏi thêm bạn chút: Trang tính này khác trang tính kia cơ bản là gì vậy, là SF hay là các tháng SX trong năm? Mà có là gì chăng nữa thì DL cũng sẽ cô gọn & 100% là không ì ạch như bây chừ!
Thưa thầy tất cả các trang cấu trúc về tất cả đều giống hệt nhau chỉ khác là sự chênh lếc sản phẩm cụ thể là đúc nhiều và đúc ít(dựa theo oder) và tỷ lệ lỗi của từng sản phẩm (dựa vào chất lượng của sản phấm), sau đó tập hợp lại ta có tổng đúc của tất cả các sp cộng lại và tỷ lệ dạng lỗi nào chiếm nhiều nhất v.vvv... hoặc là trong một sản phẩm lỗi nào là chiuếm nhiều nhất. cụ thể em cũng đã trình bày sơ qua trong bảng tính bằng cách dùng Conditionan để thể hiện lỗi nào chiếm nhiều nhất trong 1 sản phẩm đấy ạ.
Còn cách của thầy nói thì em em không có gì để nói:Đúng đúng thầy nói rất đúng em xem qua nhiều bài viết nên cũng nghĩ đến cách đấy nhưng trình của em thì có lẽ là....phải đợi đến lúc rửa mặt thì lâu gội đầu thì chóng may ra còn có thể thực hiện được vấn đề đấy bằng VBA. Thầy có file nào hay đường dẫn nào sát với cách nói trên thì chỉ cho em với ạ...
Rất hạnh phúc khi được thấy thầy và mọi người thể hiện sự nhiệt tình quá đáng ^^
Có nghĩa là chưa rõ nơi bạn 1 ngày sản xuất bao nhiêu mẻ đúc & có bao nhiêu máy đúc & cũng quan trọng không kém là các sản fẩm chắc là không giống nhau (nhưng có ~ hư hỏng hệt nhau?)
Mình sẵn lòng giúp bạn tạo 1 CSDL & quản lí bằng VBA, nhưng chuyện này không thể nhanh được.
Dù sao, cách thức quản lí của bạn như hiện nay là fá sản rồi! & fải mạnh dạn nghĩ đến cách mới thôi.
Fải tự học để tích lũy kiến thức thôi bạn à. Mình cũng là dân tự học hoàn toàn & bạn thay vì ngồi than thở thì nên bắt tay học đi; Bây chừ có GPE thì không gì là không thể. & chỉ có vậy những cái gì mình sẽ giúp bạn mới được bạn lưu loát trong sử dụng!
Có nghĩa là chưa rõ nơi bạn 1 ngày sản xuất bao nhiêu mẻ đúc & có bao nhiêu máy đúc & cũng quan trọng không kém là các sản fẩm chắc là không giống nhau (nhưng có ~ hư hỏng hệt nhau?)
Mình sẵn lòng giúp bạn tạo 1 CSDL & quản lí bằng VBA, nhưng chuyện này không thể nhanh được.
Dù sao, cách thức quản lí của bạn như hiện nay là fá sản rồi! & fải mạnh dạn nghĩ đến cách mới thôi.
Fải tự học để tích lũy kiến thức thôi bạn à. Mình cũng là dân tự học hoàn toàn & bạn thay vì ngồi than thở thì nên bắt tay học đi; Bây chừ có GPE thì không gì là không thể. & chỉ có vậy những cái gì mình sẽ giúp bạn mới được bạn lưu loát trong sử dụng!
Em xin cám ơn những ý tưởng của thầy đã đưa ra có thể nói đó là một sáng kiến rất hay.
Nhưng xin hỏi thầy làm cách đó nếu nhập thông tin hàng của hàng trăm sản phẩm liệu có dẽ thao tác không?
Như lên xuồn enter v.v... khi mình nhập nhanh dữ liệu.
Còn em thực hiện bảng tính như trên là vì để thuận tiện thao tác khi mình nhập với tốc dộ nhanh.
Tất nhiên là em không thể đi tdò từng sheet để tìm tên sản phẩm mình cần nhập dữ liệu. Mà em fair tạo một sheet tổng hợp như đã nói ở trên.
Mỗi lần nhập dữ liệu ở sheet con xong thì bấm vào Ô Home để link về sheet tổng hợp rồi sau đó nhìn vào bảng danh sách tiếp đến kick vào ô chưa tên sản phẩm thì nó lại tự link đến sheet mình cần tìm.
Em cũng chưa thể hình dung được ít nhiều về cách của thầy nói trong quá trình nhập dữ liệu ưu nhược ra sao.
Em chỉ biết làm như vậy thì mình chỉ việc nhập dữ liệu trên một bảng sau khi chọn tên sản phẩm cần nhập ở một thanh cuộn nào đó.
Nếu có điều kiện thầy cố gắng làm cho em một file như vậy nhé! Vô cùng cảm ơn thầy! Nếu có duyên thầy trò mình sẽ gặp nhau.
Em ở Đông anh Hà nội
Mong sự hồi âm như ý từ thầy!
Quản lý cônghệ là fải nhập số liệu thường xuyên theo từng mẻ, để nhập liệu nhanh ta cần có form nhập liệu (bước đầu sẽ lấy trang tính làm form) trên form có các combobox hỗ trợ để nhập cho nhanh.
Hiện 1 trang tính nào đó của bạn đã có thể thỏa mãn iêu cầu này;
Vấn đề tiếp theo là xây dựng CSDL chứa dữ liệu mà macro lấy từ form cung cấp cho nó lưu trữ.
CSDL này gồm các trường để chứa đầy đủ các thông tin về SF của bạn;
Vấn đề là các trường (nôm na là các cột) này sẽ là những cột gì thì chúng ta cần thống nhứt ngay bây giờ. Chuyện này tùy thuộc vào thông tin về SF mà bạn đang có & cần quản lí nó.
Bạn thử liệt kê các trường này ra, chúng ta mới thảo luận tiếp.
Nếu mình đưa ra cái mình có thì sẽ không fù hợp với đặc thù SF & cách thức quản lí nơi bạn.
Vậy file này của em thì sao ạ! Sheet nhiều và Conditional cũng nhiều! Nhưng file không giật!
Em cũng không biết làm thế nào lại được như vậy?
Xin các thầy chie bảo?
Option Explicit
Sub ReName()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
Sh.Name = "C" & Right("00" & CStr(Sh.Index), 3)
Next Sh
End Sub
Để đổi tên sheet thành C01, C02.... chứ gì đâu
Bạn bị lỗi chổ nào? Nếu tôi đoán không lầm thì có thể bị lỗi tên sheet đã tồn tại, không rename được
Sửa thành vầy xem:
PHP:
Sub ReName()
Dim i As Long
On Error Resume Next
For i = 1 To Sheets.Count
Sheets(i).Name = Format(i, """C""00")
Next
End Sub
Để đổi tên sheet thành C01, C02.... chứ gì đâu
Bạn bị lỗi chổ nào? Nếu tôi đoán không lầm thì có thể bị lỗi tên sheet đã tồn tại, không rename được
Sửa thành vầy xem:
PHP:
Sub ReName()
Dim i As Long
On Error Resume Next
For i = 1 To Sheets.Count
Sheets(i).Name = Format(i, """C""00")
Next
End Sub
Thanks ! Thầy
em làm được rồi! Đúng là em đang cần code này!
Vậy còn vấn đề trên em nêu thế nào vậy thầy?
Thầy xem chưa ạ? Có cách nào giảm được sự nhấp nháy của Conditional không ạ?
File đính kèm em gửi không bị nhấp nháy đó! em không biết là làm thế nào lại được như vậy!
File trên không fải em làm.
Vậy còn vấn đề trên em nêu thế nào vậy thầy?
Thầy xem chưa ạ? Có cách nào giảm được sự nhấp nháy của Conditional không ạ?
File đính kèm em gửi không bị nhấp nháy đó! em không biết là làm thế nào lại được như vậy!
File trên không fải em làm.
Cái người ta quan tâm là khi dùng VBA kết hợp với Conditional Formating thì sẽ xảy ra hiện tượng nhấp nháy ---> File của bạn có dùng code VBA đâu mà cần phải suy nghĩ