anhtuan1066
Thành viên gạo cội




- Tham gia
- 10/3/07
- Bài viết
- 5,802
- Được thích
- 6,912
Vâng , vì nó load ảnh tự động lần lượt vào các cell , không phải chèn bằng tay nên chắc không "rỗng " ạ .Trừ phi ta del nó . Cám ơn thày !Thay vì Select, rồi lại Selection.ClearContents. Bạn có thể gộp lại thành:
Range([B5], [B5].End(xlDown).Resize(, 1)).ClearContents
Tuy nhiên, dùng End(xlDown) có khi bị "sa bẫy" trong trường hợp cột B có cell rổng ở giữa nha
Thì tôi đang nói đến cái vụ "trừ phi" này nèVâng , vì nó load ảnh tự động lần lượt vào các cell , không phải chèn bằng tay nên chắc không "rỗng " ạ .Trừ phi ta del nó . Cám ơn thày !
Dạ, vậy thì dùng End(xlUp) được không ạ ? Thày giúp em câu lệnh chọn từ B5 đén ô cuối từ dưới lên với ạ ? lắm lúc do không quen nhà em cứ loay hoay mãi mà viết không đúng , nó không nghe, nó "cãi" ghê lắm ạ .Nếu nó là con, nhà em cho nó "mấy que vào đít " rồi . Nói thày đừng cười , nhà em VBA cò gà mờ lắm ạ !Thì tôi đang nói đến cái vụ "trừ phi" này nè
Tức là trước khi load ảnh, trên bảng tính đã có ảnh và dữ liệu. Mà dữ liệu cột B lại không liên tục, End(xlDown) sẽ bị "ngắt ngang" giữa chừng ---> Ý là vậy đấy
(Tôi làm việc gì, nhất là những việc QUAN TRỌNG rất ghét bị "ngắt ngang" lắm... Ẹc... Ẹc...)
Dạ, nó nghe rồi thày ạ !
Range([A5], [B65536].End(xlUp).Resize(, 1)).ClearContents
Bài này đúng ra đã giải quyết xong nhưng thật lòng tôi vẫn ấm ức. Đánh chết tôi cũng không tin rằng Pictures object không dùng được trên Excel 2003Xin thưa với Thầy là Insert Pictures thì được, tức câu lệnh này:
Target.Parent.Pictures.Insert(PicPath)
Nhưng xoá Pictures thì câu này lại không được:
Target.Parent.Pictures(Target.Address).Delete
Còn tại sao thì hỏi Anh Bill thôi! Hic
----------------
Cũng như câu này:
Sheet1.Pictures(Application.Caller)
Đối với Ex2003 nó không hiểu, nhưng câu dưới lại hiểu:
Sheet1.Shapes(Application.Caller)
Đúng là nhờ cái việc ấm ức này mà Thầy đã tìm ra nguyên nhân chính là do ký tự đặc biệt đã ảnh hưởng đến câu lệnh.Bài này đúng ra đã giải quyết xong nhưng thật lòng tôi vẫn ấm ức. Đánh chết tôi cũng không tin rằng Pictures object không dùng được trên Excel 2003
Mày mò tìm phần mềm Portable 2003 để thử, cuối cùng cũng phát hiện ra nguyên nhân: Trên Excel 2003, code VBA sẽ không làm việc nếu trong tên của Picture có ký tự "$"
Vậy là xong! Chỉ cần đặt lại tên file ảnh không có ký tự chết tiệt này (thay Address bằng Address(0,0) ) là mọi chuyện được giải quyết
Mời thử file
Cho nên, khi gặp rủi ro thì ta cố gắng chọn những rủi ro ít gây thiệt hại nhất để thực hiện, vậy thì theo em, em sẽ chọn phương án SHAPES thay cho phương án PICTURES, đó là một câu lệnh tối ưu, xét về thời gian thì cả 2 câu lệnh tương đương nhau, đôi khi dùng SHAPES để xóa còn nhanh hơn tí xíu (cho 2000 hình)
hic... sao không có ai giúp mình hết vậy