Image Controls trong VBA không thay đổi được hình khi dùng LoadPicture (1 người xem)

  • Thread starter Thread starter vba_gpe
  • Ngày gửi Ngày gửi
Liên hệ QC

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

vba_gpe

Thành viên thường trực
Tham gia
15/12/10
Bài viết
296
Được thích
44
Nghề nghiệp
Thất nghiệp
Chào anh chị
Em có vấn đề này muốn nhờ mọi người tư vấn ạ.
Em tạo ra 1 userform, Trong userfom có 1 cái image (image1)

Em muốn:
Nếu bấm vào cái image1, nếu nó đang ở hình A thì nó sẽ chuyển thành hình B (ex.bmp) , nếu ở hình B thì nó chuyển sang hình A (cl.bmp) ngược lại.
Em đặt code trong cái Userform như sau:
Mã:
Private ex As Boolean 'Ex là biến để lấy khi người dùng bấm vào.

Private Sub Image1_Click()
If ex = True Then
    Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Pictures\ex.bmp")
Else
    Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Pictures\cl.bmp")
End If
ex = Not ex
End Sub
Kết quả: Không có tác dụng gì cả.

Em không biết code load image của mình có đúng ko, em thử tạo 2 button để thử thay đổi ảnh A, B , code của 2 commanbutton của em:
Mã:
Private Sub CommandButton1_Click()' Load ảnh A
    Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Pictures\cl.bmp")
    ex = False
End Sub

Private Sub CommandButton2_Click() 'Load ảnh B
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Pictures\ex.bmp")
ex = True
End Sub
Kết quả: Em bấm vào thì thấy ảnh trong image thay đổi bình thường.

Em thử tiếp thêm lần nữa:
Trường hợp 1: Không bấm vào cái image1, chỉ bấm vào button 1, 2 để đổi ảnh => Ảnh trong image đổi theo ý của mình.
Trường hợp 2: Bấm vào cái imge1(image lúc này đã đặt code như trên). Thì sau thời điểm bấm image1, việc thay đổi ảnh bằng cách bấm vào button 1, 2 không còn tác dụng. Phải tắt form, load form lại mới bấm được. Cứ hể bấm vào cái image1 phát là việc thay đổi ảnh không có tác dụng.


Em không biết có bị lỗi gì?

Em gửi Userform lên để mọi người xem giúp.

Cảm ơn mọi người.
2 ảnh ex.bmp và cl.bmp mọi người có thể lấy của em hoặc là tự tạo đặt tên cũng được ạ.
 

File đính kèm

Chào anh chị
Em có vấn đề này muốn nhờ mọi người tư vấn ạ.
Em tạo ra 1 userform, Trong userfom có 1 cái image (image1)

Em muốn:
Nếu bấm vào cái image1, nếu nó đang ở hình A thì nó sẽ chuyển thành hình B (ex.bmp) , nếu ở hình B thì nó chuyển sang hình A (cl.bmp) ngược lại.
Em đặt code trong cái Userform như sau:
Mã:
Private ex As Boolean 'Ex là biến để lấy khi người dùng bấm vào.

Private Sub Image1_Click()
If ex = True Then
    Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Pictures\ex.bmp")
Else
    Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Pictures\cl.bmp")
End If
ex = Not ex
End Sub
Kết quả: Không có tác dụng gì cả.

Em không biết code load image của mình có đúng ko, em thử tạo 2 button để thử thay đổi ảnh A, B , code của 2 commanbutton của em:
Mã:
Private Sub CommandButton1_Click()' Load ảnh A
    Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Pictures\cl.bmp")
    ex = False
End Sub

Private Sub CommandButton2_Click() 'Load ảnh B
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Pictures\ex.bmp")
ex = True
End Sub
Kết quả: Em bấm vào thì thấy ảnh trong image thay đổi bình thường.

Em thử tiếp thêm lần nữa:
Trường hợp 1: Không bấm vào cái image1, chỉ bấm vào button 1, 2 để đổi ảnh => Ảnh trong image đổi theo ý của mình.
Trường hợp 2: Bấm vào cái imge1(image lúc này đã đặt code như trên). Thì sau thời điểm bấm image1, việc thay đổi ảnh bằng cách bấm vào button 1, 2 không còn tác dụng. Phải tắt form, load form lại mới bấm được. Cứ hể bấm vào cái image1 phát là việc thay đổi ảnh không có tác dụng.


Em không biết có bị lỗi gì?

Em gửi Userform lên để mọi người xem giúp.

Cảm ơn mọi người.
2 ảnh ex.bmp và cl.bmp mọi người có thể lấy của em hoặc là tự tạo đặt tên cũng được ạ.
Làm gì có sự kiện Image1_Click mà chạy code hả bạn?
 
Upvote 0
Làm gì có sự kiện Image1_Click mà chạy code hả bạn?
Dạ có ạ.
Thầy import file UserForm1.frm em gửi trong file đính kèm đấy ạ.
Vì Userform đơn giản nên em chỉ export UserForm ra và đính kèm file đã export chứ không đính kèm file Excel ạ. :)

Wiary_1ptXnaqBnmME3uFDSK4g8EzBOU0CUd4KFQukZuvLCovM1a98kZmDnJSqlclpLLHc6VcaKi6DNI_I9aV6YbqgC6dd6lncKwjetlqwdaD4PEGSpRln4bZ2f7gqr9316l37TX_JXxmeeNWIwSGrY3iml6DrCOH6_YDuQe6ZgrzHjehos8Vhw6KxaW3CinVaOc3d2skWQl-IDByejXu4bFQWWqTFwuQ9cOoSbCo8vEjuW3-SBLBVdylzoXrC-dXLu_kM20m-NmQUWVM2GMkBkEcrJn5agbxpfRHqvM1tHEuWUeXOrgDhJRXnuDybdTGj8lGmHFlm6FQFRadztKEY6yj59AuN0vKQb3EyFdJNIj4wIt2-RJydnnML9ZFEKSbInJcODJBlcDfpbRimZd1TScOqTBL6-gP7W2aRDD0iod5W4WoEnV9TdwwKys_oTWxWsNIVFxBJ0wa0fkuCJuOaxzQ3--8Nq4oZoup4oogkWwt0nBcPWyDVucwQ3Z44b-7FriLMZsVQzfhV-2lmt_XDqE0FZAa9KTXfnKNrQTrVtCeZLTJGrSiPP1Rv0nqwG9Tfawg3bGv0qpQoJOJcKYXqZxvGCuYt5dx9zMUgaiKA=w901-h613-no
 
Lần chỉnh sửa cuối:
Upvote 0
1. Bạn dùng 1 Button thôi
Mã:
Private Sub CommandButton1_Click()
    If ex = True Then
        Image1.Picture = LoadPicture(...)
    Else
        Image1.Picture = LoadPicture(...)
    End If
    ex = Not ex
End Sub

2. Hoặc dùng Image1_Click
Mã:
Private Sub Image1_Click()
    If ex = True Then
        Image1.Picture = LoadPicture(...)
    Else
        Image1.Picture = LoadPicture(...)
    End If
    ex = Not ex
    Me.Repaint
End Sub
 
Upvote 0
1. Bạn dùng 1 Button thôi

2. Hoặc dùng Image1_Click
Mã:
Private Sub Image1_Click()
    If ex = True Then
        Image1.Picture = LoadPicture(...)
    Else
        Image1.Picture = LoadPicture(...)
    End If
    ex = Not ex
    Me.Repaint
End Sub
Ồ. Me. Repaint
Cảm ơn bạn rất nhiều. :)
 
Upvote 0
Web KT

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

Back
Top Bottom