Lỗi khi load ảnh trong MSO 2010 (1 người xem)

  • Thread starter Thread starter USB1394
  • Ngày gửi Ngày gửi

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

USB1394

Thành viên hoạt động
Tham gia
20/12/08
Bài viết
173
Được thích
12
Nghề nghiệp
Lính triều đình
Em đang xử lý vấn đề load ảnh trên form
- Khi ta chọn 1 danh mục thì thông tin ảnh và nội dung sẽ hiển thị kèm theo nhưng khi click vào ảnh để xem ảnh lớn thì trở lại form ta chọn thông tin thì ảnh không load được (LoadPicture) còn nội dung khác thì load bình thường (Mã và Tên) . Không biết code bị lỗi gì , mong các bạn giúp đỡ +-+-+-++-+-+-++-+-+-+
 

File đính kèm

Em đang xử lý vấn đề load ảnh trên form
- Khi ta chọn 1 danh mục thì thông tin ảnh và nội dung sẽ hiển thị kèm theo nhưng khi click vào ảnh để xem ảnh lớn thì trở lại form ta chọn thông tin thì ảnh không load được (LoadPicture) còn nội dung khác thì load bình thường (Mã và Tên) . Không biết code bị lỗi gì , mong các bạn giúp đỡ +-+-+-++-+-+-++-+-+-+
Gia cát dự là: trong đường dẫn thư mục chứa file *xlsx này có dấu tiếng Việt
 
Em đang xử lý vấn đề load ảnh trên form
- Khi ta chọn 1 danh mục thì thông tin ảnh và nội dung sẽ hiển thị kèm theo nhưng khi click vào ảnh để xem ảnh lớn thì trở lại form ta chọn thông tin thì ảnh không load được (LoadPicture) còn nội dung khác thì load bình thường (Mã và Tên) . Không biết code bị lỗi gì , mong các bạn giúp đỡ +-+-+-++-+-+-++-+-+-+

Khi bạn nhấn vào Image để xem ảnh lớn thì khi trở về và chọn ảnh khác thì ảnh khác chắc chắn được nạp vào Image. Bằng chứng là nếu sau khi chọn ảnh mới bạn chuyển sang cửa sổ khác rồi sau đó quay lại UserForm thì bạn nhìn thấy ảnh mới. Bạn cứ thử mà xem.

Như vậy khi bạn xem ảnh lớn thì "không hiểu vì sao" Image trở nên "khó tính" và không tự làm mới mỗi khi nạp ảnh mới.

Tôi không tìm nguyên nhân, nhưng đã "cứng đầu" thì ta dùng thuốc trị bệnh cứng đầu, bạn có thể sửa code như sau, chỗ đỏ đỏ là tôi thêm vào để "bắt" UserForm phải tự "vẽ" lại:

Mã:
Private Sub libFind_Click()
On Error Resume Next
    With Me
        If .libFind.Column(2) = vbNullString Then
            .img01.Picture = Nothing
        Else
            .img01.Picture = LoadPicture(ThisWorkbook.Path & .libFind.Column(2))
            [SIZE=4][COLOR=#ff0000]Me.Repaint[/COLOR][/SIZE]
        End If
    
        .TextBox2.Value = Me.libFind
        .TextBox1.Value = Me.libFind.Column(1)
    End With
End Sub
 
Lần chỉnh sửa cuối:
Khi bạn nhấn vào Image để xem ảnh lớn thì khi trở về và chọn ảnh khác thì ảnh khác chắc chắn được nạp vào Image. Bằng chứng là nếu sau khi chọn ảnh mới bạn chuyển sang cửa sổ khác rồi sau đó quay lại UserForm thì bạn nhìn thấy ảnh mới. Bạn cứ thử mà xem.

Như vậy khi bạn xem ảnh lớn thì "không hiểu vì sao" Image trở nên "khó tính" và không tự làm mới mỗi khi nạp ảnh mới.

Tôi không tìm nguyên nhân, nhưng đã "cứng đầu" thì ta dùng thuốc trị bệnh cứng đầu, bạn có thể sửa code như sau, chỗ đỏ đỏ là tôi thêm vào để "bắt" UserForm phải tự "vẽ" lại:

Mã:
Private Sub libFind_Click()
On Error Resume Next
    With Me
        If .libFind.Column(2) = vbNullString Then
            .img01.Picture = Nothing
        Else
            .img01.Picture = LoadPicture(ThisWorkbook.Path & .libFind.Column(2))
            [SIZE=4][COLOR=#ff0000]Me.Repaint[/COLOR][/SIZE]
        End If
    
        .TextBox2.Value = Me.libFind
        .TextBox1.Value = Me.libFind.Column(1)
    End With
End Sub

Cách này giải quyết đc 1 phần :
- khi trở lại form ta chọn hình con mèo sẽ repair ảnh , tiếp đến bạn chọn hình con bướm (ko có file ảnh) nhưng form lại ko không repair (xóa ảnh ảnh trước đó) . có thuốc nào chữa bệnh này không bạn
 
Cách này giải quyết đc 1 phần :
- khi trở lại form ta chọn hình con mèo sẽ repair ảnh , tiếp đến bạn chọn hình con bướm (ko có file ảnh) nhưng form lại ko không repair (xóa ảnh ảnh trước đó) . có thuốc nào chữa bệnh này không bạn

Lỗi tại tôi. Bạn cho Me.Repaint ra sau block IF:

Mã:
Private Sub libFind_Click()
On Error Resume Next
    With Me
        If .libFind.Column(2) = vbNullString Then
            .img01.Picture = Nothing
        Else
            .img01.Picture = LoadPicture(ThisWorkbook.Path & .libFind.Column(2))            
        End If
        [B][COLOR=#ff0000]Me.Repaint[/COLOR][/B]
        
        .TextBox2.Value = Me.libFind
        .TextBox1.Value = Me.libFind.Column(1)
    End With
End Sub
 
Tuyệt khắc phục rùi , cảm ơn bạn rất nhiều ;;;;;;;;;;;
 

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

Back
Top Bottom