Add ảnh vào form VBA

Liên hệ QC

huancv

Thành viên mới
Tham gia
19/11/10
Bài viết
11
Được thích
0
Thưa các ad
Hiện tại em đang làm 1 form chèn ảnh vào form VBA như bên dưới.
Nhưng chỉ chèn được ảnh đuôi JPG, còn đuôi GIF và PNG lại không chèn vào được.
Nhờ các ad giúp đỡ với ạ.

"Private Sub img_Browse_Click()

Dim img As String
img = Application.GetOpenFilename(filefilter:="Png image,*.jpg,*.jpeg,*.png,*.GIF,*.bmp", Title:="Please select an image")

If Dir(img) <> "" Then
Me.Image_URL.value = img
Me.img_Photo.Picture = LoadPicture(Me.Image_URL.value)

End If

End Sub"

1604377443663.png
 

File đính kèm

  • Add picture.xlsm
    25.2 KB · Đọc: 34
Thưa các ad
Hiện tại em đang làm 1 form chèn ảnh vào form VBA như bên dưới.
Nhưng chỉ chèn được ảnh đuôi JPG, còn đuôi GIF và PNG lại không chèn vào được.
Nhờ các ad giúp đỡ với ạ.

"Private Sub img_Browse_Click()

Dim img As String
img = Application.GetOpenFilename(filefilter:="Png image,*.jpg,*.jpeg,*.png,*.GIF,*.bmp", Title:="Please select an image")

If Dir(img) <> "" Then
Me.Image_URL.value = img
Me.img_Photo.Picture = LoadPicture(Me.Image_URL.value)

End If

End Sub"

View attachment 248525
Phải sửa rất nhiều mới dùng được nha bạn. Có bàn ở đây nè:
 

File đính kèm

  • Add picture.xlsm
    27.3 KB · Đọc: 89
Upvote 0
KÍnh gửi các ad.
xin cảm ơn các ad đã giúp cho ảnh PNG vào được form .
tuy nhiên sau khi ảnh vào Listbox lại không load được ảnh từ ListBox.
Nhờ anh chị giúp đỡ với ạ.
Hiện tại lệnh bên dưới chỉ load được ảnh JPG, không load được ảnh PNG
=====================
Private Sub ListBox1_Click() 'List danh sach tim kiem
On Error Resume Next

Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 3)

'Load picture
If Me.Image_URL.value <> "" Then
Me.img_Photo.Picture = LoadImage("")

Me.img_Photo.Picture = LoadImage(Me.Image_URL.value)
End If

End Sub
 

File đính kèm

  • Add picture (All).xlsm
    31.7 KB · Đọc: 50
Upvote 0
KÍnh gửi các ad.
xin cảm ơn các ad đã giúp cho ảnh PNG vào được form .
tuy nhiên sau khi ảnh vào Listbox lại không load được ảnh từ ListBox.
Nhờ anh chị giúp đỡ với ạ.
Hiện tại lệnh bên dưới chỉ load được ảnh JPG, không load được ảnh PNG
=====================
Private Sub ListBox1_Click() 'List danh sach tim kiem
On Error Resume Next

Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 3)

'Load picture
If Me.Image_URL.value <> "" Then
Me.img_Photo.Picture = LoadImage("")

Me.img_Photo.Picture = LoadImage(Me.Image_URL.value)
End If

End Sub
1. Trước tiên xét đoạn code trong sub Timkiem_Change
Mã:
For i = 2 To Application.WorksheetFunction.CountA(Data.Range("A:C"))
    For X = 2 To 3
        a = Len(Me.Timkiem.Text)
        If Left(Data.Cells(i, X).value, a) = Me.Timkiem.Text And Me.Timkiem.Text <> "" Then
            Me.ListBox1.AddItem Data.Cells(i, 1).value
            For c = 1 To 3
                Me.ListBox1.List(ListBox1.ListCount - 1, c) = Data.Cells(i, c + 1).value
            Next c
        End If
    Next X
Next i
For i = 2 To Application.WorksheetFunction.CountA(Data.Range("A:C")) là không chính xác. Giả sử chỉ 10 dòng có dữ liệu. Lúc đó Application.WorksheetFunction.CountA(Data.Range("A:C")) trả về 30 do mỗi dòng có 3 cột dữ liệu A, B và C. Code xét 29 dòng từ 2 đến 30?

2.
Mã:
If Left(Data.Cells(i, X).value, a) = Me.Timkiem.Text And Me.Timkiem.Text <> "" Then
            Me.ListBox1.AddItem Data.Cells(i, 1).value
            For c = 1 To 3
                Me.ListBox1.List(ListBox1.ListCount - 1, c) = Data.Cells(i, c + 1).value
            Next c
End If
Nếu tìm thấy thì thêm Mã từ cột A vào cột đầu tiên (cột có chỉ số 0) của ListBox (ListBox1.AddItem), cái này đúng. Nhưng sau đó thêm 3 giá trị từ cột B, C i D (do Data.Cells(i, c + 1).value với c = 1 To 3) vào 3 cột tiếp theo của ListBox1? Do c = 1 To 3 nên 3 giá trị được thêm vào 3 cột có chỉ số 1, 2 và 3 của ListBox1. Nhưng do cột D không có giá trị (rỗng) nên cột có chỉ số 3 (cột thứ 4)trong ListBox1 chỉ chứa toàn giá trị rỗng - "". Tóm lại nhập cột D vào cột thứ 4 (có chỉ số 3) của ListBox1 là thừa.

3. Bây giờ xét dòng Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 3) trong ListBox1_Click.
Như trên đã nói thì cột thứ 4 của ListBox1, tức cột có chỉ số 3, chỉ chứa toàn giá trị rỗng nên đương nhiên Me.Image_URL.Text = "". Chính vì thế cụm IF ... End If tiếp theo không được thực hiện.

Tóm lại nếu chỉ sửa ít nhất thì phải là
Mã:
Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 2)

Nếu yêu thích sự chính xác thì sửa tiếp trong Timkiem_Change thành For c = 1 To 2. Và sửa For i = 2 To XYZ
 
Upvote 0
1. Trước tiên xét đoạn code trong sub Timkiem_Change
Mã:
For i = 2 To Application.WorksheetFunction.CountA(Data.Range("A:C"))
    For X = 2 To 3
        a = Len(Me.Timkiem.Text)
        If Left(Data.Cells(i, X).value, a) = Me.Timkiem.Text And Me.Timkiem.Text <> "" Then
            Me.ListBox1.AddItem Data.Cells(i, 1).value
            For c = 1 To 3
                Me.ListBox1.List(ListBox1.ListCount - 1, c) = Data.Cells(i, c + 1).value
            Next c
        End If
    Next X
Next i
For i = 2 To Application.WorksheetFunction.CountA(Data.Range("A:C")) là không chính xác. Giả sử chỉ 10 dòng có dữ liệu. Lúc đó Application.WorksheetFunction.CountA(Data.Range("A:C")) trả về 30 do mỗi dòng có 3 cột dữ liệu A, B và C. Code xét 29 dòng từ 2 đến 30?

2.
Mã:
If Left(Data.Cells(i, X).value, a) = Me.Timkiem.Text And Me.Timkiem.Text <> "" Then
            Me.ListBox1.AddItem Data.Cells(i, 1).value
            For c = 1 To 3
                Me.ListBox1.List(ListBox1.ListCount - 1, c) = Data.Cells(i, c + 1).value
            Next c
End If
Nếu tìm thấy thì thêm Mã từ cột A vào cột đầu tiên (cột có chỉ số 0) của ListBox (ListBox1.AddItem), cái này đúng. Nhưng sau đó thêm 3 giá trị từ cột B, C i D (do Data.Cells(i, c + 1).value với c = 1 To 3) vào 3 cột tiếp theo của ListBox1? Do c = 1 To 3 nên 3 giá trị được thêm vào 3 cột có chỉ số 1, 2 và 3 của ListBox1. Nhưng do cột D không có giá trị (rỗng) nên cột có chỉ số 3 (cột thứ 4)trong ListBox1 chỉ chứa toàn giá trị rỗng - "". Tóm lại nhập cột D vào cột thứ 4 (có chỉ số 3) của ListBox1 là thừa.

3. Bây giờ xét dòng Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 3) trong ListBox1_Click.
Như trên đã nói thì cột thứ 4 của ListBox1, tức cột có chỉ số 3, chỉ chứa toàn giá trị rỗng nên đương nhiên Me.Image_URL.Text = "". Chính vì thế cụm IF ... End If tiếp theo không được thực hiện.

Tóm lại nếu chỉ sửa ít nhất thì phải là
Mã:
Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 2)

Nếu yêu thích sự chính xác thì sửa tiếp trong Timkiem_Change thành For c = 1 To 2. Và sửa For i = 2 To XYZ
Mình đã sửa lại code.
Nhưng sau khi sửa song thì trong listbox_click lại không hiển thị được file ảnh 3160070.PNG
nhờ ad support giúp thêm lỗi này nữa ạ.
thanks ad nhiều
 

File đính kèm

  • Add picture (All).xlsm
    34.9 KB · Đọc: 52
  • 3160070.PNG
    3160070.PNG
    156.2 KB · Đọc: 45
Upvote 0
Mình đã sửa lại code.
Nhưng sau khi sửa song thì trong listbox_click lại không hiển thị được file ảnh 3160070.PNG
Tôi đã bỏ nhiều công sức và thời gian của mình để giải thích và hướng dẫn chỉnh sửa. Nhưng bạn không làm như tôi hướng dẫn. Tôi đã ghi rất rõ
Tóm lại nếu chỉ sửa ít nhất thì phải là

Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 2)
Bạn không sửa vì vẫn là Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 3). Trong khi đó lại bỏ If và End If đi. Bỏ đi thì giúp được gì? Tôi đã viết rất rõ là nếu không sửa cái tôi nói thì Me.Image_URL.Text = "". Khi đó LoadImage(Me.Image_URL.value) trả về NOTHING vì đường dẫn tới tập tin ảnh là RỖNG: Me.Image_URL.value = RỖNG. Kết cục là không hiện ảnh.
 
Upvote 0
Phải sửa rất nhiều mới dùng được nha bạn. Có bàn ở đây nè:
Thank you ad ạ ::::)))
 
Upvote 0
Tôi đã bỏ nhiều công sức và thời gian của mình để giải thích và hướng dẫn chỉnh sửa. Nhưng bạn không làm như tôi hướng dẫn. Tôi đã ghi rất rõ

Bạn không sửa vì vẫn là Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 3). Trong khi đó lại bỏ If và End If đi. Bỏ đi thì giúp được gì? Tôi đã viết rất rõ là nếu không sửa cái tôi nói thì Me.Image_URL.Text = "". Khi đó LoadImage(Me.Image_URL.value) trả về NOTHING vì đường dẫn tới tập tin ảnh là RỖNG: Me.Image_URL.value = RỖNG. Kết cục là không hiện ảnh.
Buồn quá, mình đã thử Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 3). và Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 2). đều không load được ảnh PNG mà chỉ load được ảnh JPG thôi,
 
Upvote 0
Buồn quá, mình đã thử Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 3). và Me.Image_URL.Text = ListBox1.List(ListBox1.ListIndex, 2). đều không load được ảnh PNG mà chỉ load được ảnh JPG thôi,
Vấn đề dùng code để load được ảnh PNG là vấn đề khác. Tôi đã giúp bạn về code để sao cho đường dẫn không là RỖNG, vì code của bạn sai. Còn code để load PNG chẳng phải là bạn đã cám ơn tận 2 lần ở bài #3 và bài #9 là gì? Vậy thì đi hỏi người ta chứ sao lại hỏi tôi?

Bạn tự xoay xở nhé, tôi không giúp bạn nữa đâu.
 
Lần chỉnh sửa cuối:
Upvote 0
Phải sửa rất nhiều mới dùng được nha bạn. Có bàn ở đây nè:
em làm giống thầy mà bị lỗi file chỗ

Public Function LoadImage(ByVal strFName As String) As IPicture

thầy có thể giúp em sửa lại được ko ạ? Có gì thầy xem giúp em phần listbox click không hiện thông tin vào các text với ạ
 

File đính kèm

  • DANH SACH.xlsm
    147 KB · Đọc: 14
Upvote 0
Thưa các ad
Hiện tại em đang làm 1 form chèn ảnh vào form VBA như bên dưới.
Nhưng chỉ chèn được ảnh đuôi JPG, còn đuôi GIF và PNG lại không chèn vào được.
Nhờ các ad giúp đỡ với ạ.

"Private Sub img_Browse_Click()

Dim img As String
img = Application.GetOpenFilename(filefilter:="Png image,*.jpg,*.jpeg,*.png,*.GIF,*.bmp", Title:="Please select an image")

If Dir(img) <> "" Then
Me.Image_URL.value = img
Me.img_Photo.Picture = LoadPicture(Me.Image_URL.value)

End If

End Sub"

View attachment 248525
mình không biết nhiều lắm chỉ được cái sưu tầm, bạn tham khảo xem đúng ý chưa nhé
 

File đính kèm

  • LoadImage.zip
    1.3 MB · Đọc: 38
Upvote 0
Web KT
Back
Top Bottom