Không load được ảnh trên Sheet vào Userform

Liên hệ QC

Mr.hieudoanxd

Thành viên thường trực
Tham gia
25/10/19
Bài viết
322
Được thích
150
Đầu xuân em xin kính chúc gia đình diễn đàn năm mới sức khỏe và thành công!
Khai xuân, em học hỏi chút để mở mang kiến thức mà lại đang vướng chỗ này. Kính mong các anh/chị giúp đỡ
Em tham khảo bài viết sau đây: https://www.giaiphapexcel.com/diendan/threads/load-shape-của-sheet-lên-button-của-form.74484/
về việc Load các Shape có sẵn trên sheet vào Userfrom của anh [U]siwtom[/U] (Batman1) và anh ndu96081631 Tuy nhiên khi thực hành và thao tác code có chạy nhưng không load được ảnh vào Userform. Em có mô tả qua file dưới
Trong Userform em có chèn thêm đoạn code của em copy 1 đoạn Range của sheet để tạo ảnh. Em muốn hỏi luôn liệu bỏ qua thao tác này thì ta nên làm như thế nào?
Em ơn nhiều
 

File đính kèm

  • Load anh vao Image Userform.xlsb
    280.5 KB · Đọc: 10
Bạn viết
Mã:
Img01.Picture = GetPictureObject(shp.Name, 2, Tempt)

Bạn không đọc kỹ rồi. Nếu dùng Function GetPictureObject của siwtom thì phải đọc kỹ hướng dẫn. Khi loadOpt <> 0 và loadOpt <> 1--> image là tên của ảnh trên Sheet và obj là tên Sheet đó. Nhưng ở trên (xem hình) có ghi rõ là:

Nếu cái Shape kia là Image - thẻ Developer --> Insert --> ActiveX Controls --> Image thì ...

Tức Image được chèn từ thẻ Developer --> Insert --> ActiveX Controls --> Image

Bạn chèn ảnh theo cách khác nên không thể dùng GetPictureObject với loadOpt <> 0 và loadOpt <> 1 (bạn dùng loadOpt = 2) được.

anh.jpg

Thay cho code ở trên thì dùng code của ndu (không ghi ra đĩa nhé)
Mã:
Img01.Picture = PictureFromObject(shp)
 
Upvote 0
Thay cho code ở trên thì dùng code của ndu (không ghi ra đĩa nhé)
Mã:
Img01.Picture = PictureFromObject(shp)
Cảm ơn anh, em đã sử lý được vấn đề trên. Tuy nhiên vẫn còn lấn cấn là phải tạo sheet để lưu tạm ảnh đệm. Vậy có cách nào không cần dùng sheet đệm không ạ
 

File đính kèm

  • Load anh vao Image Userform.xlsb
    281.8 KB · Đọc: 8
Upvote 0
Cảm ơn anh, em đã sử lý được vấn đề trên. Tuy nhiên vẫn còn lấn cấn là phải tạo sheet để lưu tạm ảnh đệm. Vậy có cách nào không cần dùng sheet đệm không ạ
Sửa thành
Mã:
Private Sub CbB_Change()
Dim rng As Range
    If CbB.ListIndex > -1 Then
        Set rng = Sheet16.Range("A" & ar(CbB.ListIndex + 1, 2) & ":L" & ar(CbB.ListIndex + 1, 3))
        Img01.Picture = PictureFromObject(rng)
    End If
End Sub

Chú ý: bạn viết sai bét nhè
Mã:
Sheet16.Range("A" & ar(CbB.ListIndex, 2) & ":L" & ar(CbB.ListIndex, 3)).CopyPicture Appearance:=xlScreen, Format:=xlPicture

Mục đầu tiên trong mảng ar có chỉ số dòng là 1, nhưng mục đó trong ComboBox có chỉ số là 0. Nếu bạn chọn mục đầu tiên trong ComboBox thì CbB.ListIndex = 0 nên "A" & ar(CbB.ListIndex, 2) = "A" & ar(0, 2) sẽ có lỗi do chỉ số trong mảng ar tính từ 1. Tương tự ":L" & ar(CbB.ListIndex, 3) cũng có lỗi. Trong mảng arr không có dòng 0!!!
 
Upvote 0
Chú ý: bạn viết sai bét nhè
Mã:
Sheet16.Range("A" & ar(CbB.ListIndex, 2) & ":L" & ar(CbB.ListIndex, 3)).CopyPicture Appearance:=xlScreen, Format:=xlPicture

Mục đầu tiên trong mảng ar có chỉ số dòng là 1, nhưng mục đó trong ComboBox có chỉ số là 0. Nếu bạn chọn mục đầu tiên trong ComboBox thì CbB.ListIndex = 0 nên "A" & ar(CbB.ListIndex, 2) = "A" & ar(0, 2) sẽ có lỗi do chỉ số trong mảng ar tính từ 1. Tương tự ":L" & ar(CbB.ListIndex, 3) cũng có lỗi. Trong mảng arr không có dòng 0!!!
Vâng anh! em cũng vừa phát hiện ra chỗ sai do hình ảnh thể hiện không đúng với lựa chọn đang định sửa lại file thì anh đã trả lời rồi :D em sửa lại thành CbB.Listindex +1,...) thì thấy đúng ạ.
 
Upvote 0
Web KT

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

Back
Top Bottom