Hiển thị hình ảnh trong excel

Liên hệ QC

nhatquyelec

Thành viên mới
Tham gia
17/12/10
Bài viết
48
Được thích
2
Nghề nghiệp
Elec Engineer
chào các bạn, mình là một người dùng excel thích dùng các tính năng VBA nhưng không rành nhiều về lập trình, nên mình muốn nhờ mọi người giúp đỡ tôi một vấn đề như sau :
mình muốn tại một ô, khi mình chọn MBA thì tại một khung kế bên sẽ hiện hình ảnh của Máy biến áp, chọn vào XA thì khung bên hiện hình ảnh xà, ...tương tự như vậy...
mình đã làm như sau :
Tại ô chứa các chữ viết tắt : MBA, XA,... mình dùng tính năng "Data Validation" để tạo các mục chọn,
tiếp theo mình vẽ khung chứa hình ảnh bằng Image(activeXcontrol) trong mục Developer, excel07), rồi tiếp theo đó thì mình không biết làm thế nào nữa, hì hì...
Mong những ai thấy vấn đề này đơn giản thì giúp đỡ cho
cám ơn !
email : nhatquyelec@gmail.com
 
thế này hợp ý bạn chưa?
 

File đính kèm

  • chen anh gpe.rar
    681 KB · Đọc: 486
Upvote 0
thế này hợp ý bạn chưa?
Code của bạn thế này:
PHP:
Dim anh As String
Private Sub Worksheet_Change(ByVal Target As Range)
  Set rng = Application.Intersect(Target, [d4])
  anh = [d4]
  If Not Target Is Nothing Then
    Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & anh & ".jpg")
  End If
End Sub
Nó không sai nhưng mà... THỪA đến mức không cần thiết
Tôi thì sẽ viết vầy:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$D$4" Then
    Sheet1.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & Target & ".jpg")
  End If
End Sub
 
Upvote 0
Sao chưa chạy được vậy thầy

Em chưa hiểu về nó, mong thầy chỉ giúp tiếp em, cảm ơn
 
Upvote 0
Em chưa hiểu về nó, mong thầy chỉ giúp tiếp em, cảm ơn
Sai 3 chổ:
Thứ nhất If Target.Address = "$b$2" then là sai! Không phải muốn tùy tiện viết b thường hay hoa gì cũng được! Phải sửa thành vầy If Target.Address = "$B$2" then
Thứ hai: ng.Image1.Picture là sai ---> Đúng thì phải vầy Sheets("ng").Image1.Picture hoặc Sheet1.Image1.Picture
Thứ ba: Trên bảng tính của bạn chẳng có cái Image1 nào cả ---> Phải vẽ ra chứ
 

File đính kèm

  • New Folder.rar
    168.2 KB · Đọc: 304
Upvote 0
Em cảm ơn thày NDU đã chỉ bảo thật hay. Code ngắn gọn mà hiệu quả.
Cho e xin phép dựa vào code của thày trả lời bạn ngodany135
code của bạn
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "[COLOR=#ff0000]$b$2[/COLOR]" Then
[COLOR=#ff0000]    ng[/COLOR].Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & Target & ".jpg")
  End If
End Sub
Có 3 chỗ sai
1 - không có Image1 trong sheet1
2 - (ng...) Cái này là tên sheet trong phần name chứ không phải ng
3 - $b$2 phải là $B$2 vì e làm mãi mà target.address = $B$2
Hy vọng e nói sai ít thôi..hihi
Có gì mong các thầy chỉ giáo tiếp
 
Upvote 0
hic e up bài muộn rồi
 
Upvote 0
Cái Thứ ba: Trên bảng tính của bạn chẳng có cái Image1 nào cả ---> Phải vẽ ra chứ.
------------
Hướng dẫn em vẽ cái màu đỏ trên dùm. Cảm ơn
 
Upvote 0
bạn vào menu view > toolbar > visualbasic
Nó sẽ hiện ra cái tool của visual basic > chọn IMAGE rồi vẽ như vẽ hình draw vậy
phải chuột vào nó chọn Property > Name > dánh IMAGE1. ok
 
Upvote 0
trước hết cám ơn mọi người đã quan tâm giúp đỡ, đặc biệt thành viên "ndu96081631", đã đáp ứng được yêu cầu
Tuy nhiên cảm phiền bạn giải thích các mã mà bạn viết được không, mình mới tập về VBA nên muốn hiểu thêm tí về vài lệnh
Cám ơn mọi người !
Email : nhatquyelec@gmail.com
 
Upvote 0
trước hết cám ơn mọi người đã quan tâm giúp đỡ, đặc biệt thành viên "ndu96081631", đã đáp ứng được yêu cầu
Tuy nhiên cảm phiền bạn giải thích các mã mà bạn viết được không, mình mới tập về VBA nên muốn hiểu thêm tí về vài lệnh
Cám ơn mọi người !
Email : nhatquyelec@gmail.com
Lệnh đơn giản thôi mà
Private Sub Worksheet_Change(ByVal Target As Range) ---> Câu lệnh này có sẳn trong Excel (khỏi viết).

untitled1.JPG

untitled2.JPG

Đoạn code này hoạt động khi ta gõ gì đó vào vùng quy định. Vùng quy định ở đây là Target.

If Target.Address = "$D$4" Then ---> Nếu gõ gì đó vào 1 cell có địa chỉ là $D$4 thì...

Sheet1.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & Target & ".jpg") ---> Object có tên là Image1 ở sheet1 sẽ được gán hình bằng lệnh LoadPicture("Đường dẫn chứa file hình"). Trong đó Thisworkbook.Path là đường dẫn thư mục chứa file Excel
----------------------
Ngoài ra, để chèn hình ảnh vào Excel. cũng có cách khác khá hay, xem tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?51408-Chèn-hình-vào-cell-bằng-hàm-tự-tạo
 
Lần chỉnh sửa cuối:
Upvote 0
à con điều này nữa, vì số lượng ảnh đại diện về sau có thể lớn, nên mỗi bức ảnh đặt tên theo số sẽ tiện hơn là đặt tên cụ thể luôn, rồi sau đó mình vào file excel tạo một sheet mới gồm 2 cột, một cột ghi tên, một cột ghi mã số tương ứng vd : MBA(cộtA)->1(cộtB), MAYCAT(cộtA) ->2(cộtB),... sau đó qua bên sheet "ng" mà bạn đã tạo, tại cột A2 mình sẽ nhập tên thiết bị vào ( dùng Data Validation làm option chọn cho khoẻ ) , còn cột B2 mình dùng =VLOOKUP(A2,data!A1:b10,2,false).
kết quả, khi chọn bên cột A2 thì cột B2 cũng nhảy số tương ứng ( để qua đó Image1 có thể tham chiếu vào), tuy nhiên lúc này khung Image không nhảy ảnh như ý nữa nó đứng yên à, sao vậy hè
 
Upvote 0
Cho mình hỏi thêm, câu lệnh này thì file Excel phải để cùng thư mục với một số hình ảnh. Công ty mình có diễn đàn mình muốn đưa file Excel lên mọi người coi chẳng lẽ đưa cả thư mục thì nặng quá. Mong được giúp đỡ
 
Upvote 0
Cho mình hỏi thêm, câu lệnh này thì file Excel phải để cùng thư mục với một số hình ảnh. Công ty mình có diễn đàn mình muốn đưa file Excel lên mọi người coi chẳng lẽ đưa cả thư mục thì nặng quá. Mong được giúp đỡ
bạn chịu khó úp lên một cái server nào đó rồi gửi đường link lên đấy.
 
Upvote 0
Web KT
Back
Top Bottom