Help! Cải Tiến Code VBA Chèn Hình Vào File Excel

Giải Pháp Excel
  • Trang chủ Có gì mới Hoạt động gần nhất Tác giả
  • Diễn đàn Tìm bài viết mới Tìm theo chuyên mục
  • Video New Video về Excel Video về tin học khác Tin tức về tin học chung
  • Thông tin mới Tìm bài mới Tài Nguyên Mới Hoạt động gần nhất
  • Tài nguyên Đánh giá mới nhất Tìm tài nguyên
  • Facebook
  • Đóng góp
Đăng nhập Đăng Ký Có gì mới? Tìm kiếm

Tìm kiếm

Mọi nơi Đề tài Diễn đàn này Đề tài này Chỉ tìm trong tiêu đề Bởi: Tìm kiếm Tìm nâng cao…
  • Tìm bài viết mới
  • Tìm theo chuyên mục
Menu Đăng nhập Đăng Ký Install the app Install How to install the app on iOS

Follow along with the video below to see how to install our site as a web app on your home screen.

Note: This feature may not be available in some browsers.

  • Khách ơi! GPE thông tin đến bạn ấn phẩm "lập trình VBA trong Excel": - Phần cơ bản - Phần Nâng Cao - VBA trong Excel - Cải thiện và tăng tốc
  • Trang chủ
  • Diễn đàn
  • Lập Trình với Excel
  • Lập Trình với Excel
You are using an out of date browser. It may not display this or other websites correctly.You should upgrade or use an alternative browser. Help! Cải tiến code VBA chèn hình vào file Excel
  • Thread starter zukura
  • Ngày gửi 28/1/19
Liên hệ QC Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1 Cả nhà giúp em với. Vấn đề của em là khi có 1 cột mã hàng, thì excel sẽ tự chèn ảnh có sẵn (trong thư mục cố định, tên file là tên của mã hàng) vào cột bên cạnh. Trước đó em có xài cách của 1 bác khác là viết 1 hàm riêng cho file excel đó, hàm compic(đường dẫn hình). Là dạng chèn hình vào comment. Nhưng do lúc chạy rất hay bị văng ra nên không được tiện lắm. Hôm qua em mò trên mạng được code VBA của 1 bác về chèn hình vào excel sau khi ta gõ mã của hình đó. Thấy code của bác này chạy rất nhẹ nhàng và chèn trực tiếp (chứ không phải comment), nên em rất thích. Nhưng chưa đủ áp dụng vào công việc của em, nhờ các bác cao thủ giúp em với ạ: - File đính kèm đã có code chạy cho cột mã 1 - Nếu em có thêm cột mã 2 thì code sẽ viết như thế nào? (Nếu dạng hàm thì quá dễ, hàm ở đâu hình sẽ hiện ở đó) - Cột mã nếu là công thức hoặc khi copy dán thì code không chạy (cả ngàn mã không thể gõ tay rồi enter được) -> lỗi type miss match - Nếu trong 10 mã mà có 5 mã bị sai, bỏ trống -> 5 mã còn lại vẫn hiện hình, 5 mã kia không hiện (đằng này báo lỗi và ko hiện tất) Giúp em với nha.

File đính kèm

  • Cach chen hinh vao excel.rar 28.4 KB · Đọc: 253
  • 1
  • 2
  • 3
Tiếp 1 of 3

Go to page

Tiếp tục Tiếp Last Sắp xếp theo thời gian sắp xếp theo bầu chọn B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,774 Được thích 9,768
zukura đã viết: - Cột mã nếu là công thức hoặc khi copy dán thì code không chạy (cả ngàn mã không thể gõ tay rồi enter được) -> lỗi type miss match Nhấp chuột vào đây để mở rộng...
Nếu cột Mã dùng công thức thì khi công thức phải tính lại do tham chiếu thay đổi thì sự kiện Change không sảy ra nên code sẽ không được thực hiện. Và kết quả là ảnh không được đổi. Code dưới đây cho phép dán hàng loạt Mã. ------------- Trước hết về sub tổng quát InsertPicture. Bạn có thể lưu Module cùng với InsertPicture vào "thư viện" - một thư mực nào đó, để khi cần thì chỉ (trong VBE): File -> Import File -> duyệt tới tập tin BAS đã lưu -> chọn tập tin BAS để thêm vào tập tin Excel hiện hành -> dùng Sub InsertPicture trong tập tin hiện hành. Bạn không nên dùng Pictures vì đôi khi gặp những lỗi khó hiểu. InsertPicture có nhiều tùy chọn: có thể nhập ảnh vào 1 ô hoặc vùng nhiều ô mà không cần merge cells, nhập ảnh với kích thước thực, nhập ảnh center trong ô/vùng hoặc vừa khít, nhập ảnh nhưng khi mang sang máy khác thì phải mang ảnh theo hoặc nhập ảnh vĩnh viễn vào sheet để khi mang sang máy khác thì không phải mang ảnh đi theo. Tôi nhìn tập tin của bạn thì thấy bạn muốn nhập ảnh vừa khít với vùng (ảnh sẽ bị biến dạng nếu tỉ lệ cao/rộng của vùng <> cao/rộng của ảnh). Code Mã:Sao chép. Private Sub Worksheet_Change(ByVal Target As range) Dim rng As range If Intersect(Target, Union([A2:A10000], [D2:D10000])) Is Nothing Then Exit Sub For Each rng In Target InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1) Next rng End Sub Code trên cho phép bạn dán tên ảnh (copy từ đâu đó) hàng loạt vào cột A hoặc D kể từ dòng 2 trở đi. Với code trên thì sau khi chèn ảnh có thể xóa ảnh trên đĩa và khi gửi cho đối tác không phải gửi ảnh theo. Nếu bạn không xóa ảnh trên đĩa và luôn gửi ảnh kèm tập tin cho đối tác thì nên chèn link thôi để tập tin nhẹ. Trong trường hợp này sửa thành Mã:Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True Nếu ảnh không là JPG thì sửa ".jpg" thích hợp. Nếu ảnh ở thư mục con vd. Anh thì sửa ThisWorkbook.path & "\" thành ThisWorkbook.path & "\Anh\" Code phục vụ 2 cột là A và D. Nếu có thêm cột thì thêm vào trong ngoặc của Union([A2:A10000], [D2:D10000]) Cuối cùng là sub tổng quát InsertPicture: Mở tập tin -> Alt + F11 -> menu Insert -> Module -> dán code dưới vào Module vừa thêm. Để có thể dùng sub tổng quát InsertPicture trong những tập tin tương lai thì: chọn Module (click tên Module) -> menu File -> Export File -> duyệt tới thư mục cần lưu -> lưu lại với tên nào đó.BAS Code cho Module vừa thêm Mã:Sao chép. Sub InsertPicture(ByVal PicFilename As String, Optional Target As range = Nothing, _ Optional original As Boolean = False, Optional center As Boolean = False, _ Optional LinkToFile As Boolean = False) ' Target: vung nhap anh. Co the la nhieu cell ' Neu Target = Nothing thi Target = ActiveCell ' Neu original = True thi nhap anh kich thuoc thuc. ' Neu original = FALSE thi neu center = True thi anh se center trong vung Target, ' nguoc lai thi se vua khit vung Target ' LinkToFile = False thi khong can giu anh tren dia, nguoc lai bat buoc phai giu anh de moi lan mo thi co Dim w As Double, h As Double, shp As Shape, fso As Object If Target Is Nothing Then Set Target = ActiveCell On Error Resume Next Target.Parent.Shapes(Target.Address).Delete On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(PicFilename) Then If LinkToFile Then Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoTrue, msoFalse, Target.left, Target.top, 0, 0) Else Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoFalse, msoTrue, Target.left, Target.top, 0, 0) End If If Not shp Is Nothing Then With shp If original Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue ElseIf center Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue w = Target.Width h = w * .Height / .Width If h > Target.Height Then h = Target.Height w = h * .Width / .Height End If .left = Target.left + (Target.Width - w) / 2 .top = Target.top + (Target.Height - h) / 2 .Width = w .Height = h Else .Width = Target.Width .Height = Target.Height End If shp.Name = Target.Address shp.Placement = xlMoveAndSize End With End If End If Set fso = Nothing End Sub Upvote 0 Trungpro04

Trungpro04

Thành viên mới
Tham gia 19/1/19 Bài viết 9 Được thích 2 Chèn ảnh và cố định mới siêu chứ chèn ảnh toàn thừa thì hỏng Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
Trungpro04 đã viết: Chèn ảnh và cố định mới siêu chứ chèn ảnh toàn thừa thì hỏng Nhấp chuột vào đây để mở rộng...
Bác ấy quá siêu bác ạ. Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
batman1 đã viết: Nếu cột Mã dùng công thức thì khi công thức phải tính lại do tham chiếu thay đổi thì sự kiện Change không sảy ra nên code sẽ không được thực hiện. Và kết quả là ảnh không được đổi. Code dưới đây cho phép dán hàng loạt Mã. ------------- Trước hết về sub tổng quát InsertPicture. Bạn có thể lưu Module cùng với InsertPicture vào "thư viện" - một thư mực nào đó, để khi cần thì chỉ (trong VBE): File -> Import File -> duyệt tới tập tin BAS đã lưu -> chọn tập tin BAS để thêm vào tập tin Excel hiện hành -> dùng Sub InsertPicture trong tập tin hiện hành. Bạn không nên dùng Pictures vì đôi khi gặp những lỗi khó hiểu. InsertPicture có nhiều tùy chọn: có thể nhập ảnh vào 1 ô hoặc vùng nhiều ô mà không cần merge cells, nhập ảnh với kích thước thực, nhập ảnh center trong ô/vùng hoặc vừa khít, nhập ảnh nhưng khi mang sang máy khác thì phải mang ảnh theo hoặc nhập ảnh vĩnh viễn vào sheet để khi mang sang máy khác thì không phải mang ảnh đi theo. Tôi nhìn tập tin của bạn thì thấy bạn muốn nhập ảnh vừa khít với vùng (ảnh sẽ bị biến dạng nếu tỉ lệ cao/rộng của vùng <> cao/rộng của ảnh). Code Mã:Sao chép. Private Sub Worksheet_Change(ByVal Target As range) Dim rng As range If Intersect(Target, Union([A2:A10000], [D2:D10000])) Is Nothing Then Exit Sub For Each rng In Target InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1) Next rng End Sub Code trên cho phép bạn dán tên ảnh (copy từ đâu đó) hàng loạt vào cột A hoặc D kể từ dòng 2 trở đi. Với code trên thì sau khi chèn ảnh có thể xóa ảnh trên đĩa và khi gửi cho đối tác không phải gửi ảnh theo. Nếu bạn không xóa ảnh trên đĩa và luôn gửi ảnh kèm tập tin cho đối tác thì nên chèn link thôi để tập tin nhẹ. Trong trường hợp này sửa thành Mã:Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True Nếu ảnh không là JPG thì sửa ".jpg" thích hợp. Nếu ảnh ở thư mục con vd. Anh thì sửa ThisWorkbook.path & "\" thành ThisWorkbook.path & "\Anh\" Code phục vụ 2 cột là A và D. Nếu có thêm cột thì thêm vào trong ngoặc của Union([A2:A10000], [D2:D10000]) Cuối cùng là sub tổng quát InsertPicture: Mở tập tin -> Alt + F11 -> menu Insert -> Module -> dán code dưới vào Module vừa thêm. Để có thể dùng sub tổng quát InsertPicture trong những tập tin tương lai thì: chọn Module (click tên Module) -> menu File -> Export File -> duyệt tới thư mục cần lưu -> lưu lại với tên nào đó.BAS Code cho Module vừa thêm Mã:Sao chép. Sub InsertPicture(ByVal PicFilename As String, Optional Target As range = Nothing, _ Optional original As Boolean = False, Optional center As Boolean = False, _ Optional LinkToFile As Boolean = False) ' Target: vung nhap anh. Co the la nhieu cell ' Neu Target = Nothing thi Target = ActiveCell ' Neu original = True thi nhap anh kich thuoc thuc. ' Neu original = FALSE thi neu center = True thi anh se center trong vung Target, ' nguoc lai thi se vua khit vung Target ' LinkToFile = False thi khong can giu anh tren dia, nguoc lai bat buoc phai giu anh de moi lan mo thi co Dim w As Double, h As Double, shp As Shape, fso As Object If Target Is Nothing Then Set Target = ActiveCell On Error Resume Next Target.Parent.Shapes(Target.Address).Delete On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(PicFilename) Then If LinkToFile Then Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoTrue, msoFalse, Target.left, Target.top, 0, 0) Else Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoFalse, msoTrue, Target.left, Target.top, 0, 0) End If If Not shp Is Nothing Then With shp If original Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue ElseIf center Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue w = Target.Width h = w * .Height / .Width If h > Target.Height Then h = Target.Height w = h * .Width / .Height End If .left = Target.left + (Target.Width - w) / 2 .top = Target.top + (Target.Height - h) / 2 .Width = w .Height = h Else .Width = Target.Width .Height = Target.Height End If shp.Name = Target.Address shp.Placement = xlMoveAndSize End With End If End If Set fso = Nothing End Sub Nhấp chuột vào đây để mở rộng...
Em cảm ơn bác rất nhiều đã hướng dẫn cụ thể như vậy. Em là dân copy xài chứ không rành code được bác dành time hướng dẫn vậy em cảm ơn rất nhiều ạ vì mò trên mạng không có hoặc giải pháp không được như mong đợi. Nói chung hơn em mong đợi nhiều lắm bác. Upvote 0 Trungpro04

Trungpro04

Thành viên mới
Tham gia 19/1/19 Bài viết 9 Được thích 2
zukura đã viết: Em cảm ơn bác rất nhiều đã hướng dẫn cụ thể như vậy. Em là dân copy xài chứ không rành code được bác dành time hướng dẫn vậy em cảm ơn rất nhiều ạ vì mò trên mạng không có hoặc giải pháp không được như mong đợi. Nói chung hơn em mong đợi nhiều lắm bác. Nhấp chuột vào đây để mở rộng...
Chèn ảnh cố định không cần dùng code nhé bạn có gì liên hệ mình chen-anh.png Upvote 0 B

babyheomoi

Thành viên thường trực
Tham gia 22/9/13 Bài viết 396 Được thích 91
Trungpro04 đã viết: Chèn ảnh cố định không cần dùng code nhé bạn có gì liên hệ mình View attachment 211757 Nhấp chuột vào đây để mở rộng...
Bác chia sẻ cho anh em học hỏi luôn đi Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,774 Được thích 9,768 Phải chăng "Linked Picture"? Quá tầm thường. Nhưng lúc đó phải nhập hết các ảnh có trong kho vào sheet. Để khi đổ hàng loạt Mã bất kỳ vào cột A thì có ảnh để mà link. Hay là còn cách tuyệt mật nào chăng? Diễn đàn hoạt động theo cách người biết rồi giúp người chưa biết. Nếu có cách hay thì có lẽ nên chia sẻ thay vì tạo ra sự bí ẩn. Hoặc im lặng giữ cho riêng mình. Lần chỉnh sửa cuối: 29/1/19 Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
Trungpro04 đã viết: Chèn ảnh cố định không cần dùng code nhé bạn có gì liên hệ mình View attachment 211757 Nhấp chuột vào đây để mở rộng...
Nếu không dùng code thì càng nhẹ. Nếu file 10.000 dòng mà dùng module khi mình insert 1 cột sẽ đơ máy luôn. Nếu được anh chia sẽ cho mọi người đi. Có một số trang họ bán tool làm báo giá 700k mà bác batman chia sẽ free cho mọi người luôn đấy. Nói chung em thấy xài rất ổn còn hay hơn tool họ quảng cáo. Lần chỉnh sửa cuối: 29/1/19 Upvote 0 Kiều Mạnh

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia 9/6/12 Bài viết 5,538 Được thích 4,126 Giới tính Nam nếu ko dùng code mà chèn 10.000 ảnh có tới tết công gô sao .... + kéo hàm xuống nữa file nó to và nặng như cái xe lu thì có mà tèo téo teo chắc luôn -0-0-0-===\. Upvote 0 be_09

be_09

Biên Hòa, Đồng Nai
Tham gia 9/4/11 Bài viết 9,972 Được thích 9,870 Nghề nghiệp Công chức
kieu manh đã viết: nếu ko dùng code mà chèn 10.000 ảnh có tới tết công gô sao .... + kéo hàm xuống nữa file nó to và nặng như cái xe lu thì có mà tèo téo teo chắc luôn Nhấp chuột vào đây để mở rộng...
Anh nghĩ chủ Topic muốn làm 1 bảng báo giá nhưng lại không nêu vấn đề cụ thể mà lại hỏi về cách chèn hình. Nếu có đến 10.000 hình mà dùng hàm là bức tử, theo anh thì chơi vầy. 1/ Làm 1 danh mục chứa dữ liệu có tên 10.000 hình và tất cả nội dung cần như chủng loại, đặc điểm, đơn giá. 2/ 1 Folder chứa tất cả các hình với tên File tương ứng trong 1 cột chứa danh mục. 3/ Sử dụng 1 UserForm với ListBox chứa danh mục. 4/ Khi mở Form thì tìm theo chủng loại chọn và gán dữ liệu lên sheet nó tự tra và lấy hình trong Folder và gán hình vào Cell tương ứng với từng danh mục. Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
batman1 đã viết: Nếu cột Mã dùng công thức thì khi công thức phải tính lại do tham chiếu thay đổi thì sự kiện Change không sảy ra nên code sẽ không được thực hiện. Và kết quả là ảnh không được đổi. Code dưới đây cho phép dán hàng loạt Mã. ------------- Trước hết về sub tổng quát InsertPicture. Bạn có thể lưu Module cùng với InsertPicture vào "thư viện" - một thư mực nào đó, để khi cần thì chỉ (trong VBE): File -> Import File -> duyệt tới tập tin BAS đã lưu -> chọn tập tin BAS để thêm vào tập tin Excel hiện hành -> dùng Sub InsertPicture trong tập tin hiện hành. Bạn không nên dùng Pictures vì đôi khi gặp những lỗi khó hiểu. InsertPicture có nhiều tùy chọn: có thể nhập ảnh vào 1 ô hoặc vùng nhiều ô mà không cần merge cells, nhập ảnh với kích thước thực, nhập ảnh center trong ô/vùng hoặc vừa khít, nhập ảnh nhưng khi mang sang máy khác thì phải mang ảnh theo hoặc nhập ảnh vĩnh viễn vào sheet để khi mang sang máy khác thì không phải mang ảnh đi theo. Tôi nhìn tập tin của bạn thì thấy bạn muốn nhập ảnh vừa khít với vùng (ảnh sẽ bị biến dạng nếu tỉ lệ cao/rộng của vùng <> cao/rộng của ảnh). Code Mã:Sao chép. Private Sub Worksheet_Change(ByVal Target As range) Dim rng As range If Intersect(Target, Union([A2:A10000], [D2:D10000])) Is Nothing Then Exit Sub For Each rng In Target InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1) Next rng End Sub Code trên cho phép bạn dán tên ảnh (copy từ đâu đó) hàng loạt vào cột A hoặc D kể từ dòng 2 trở đi. Với code trên thì sau khi chèn ảnh có thể xóa ảnh trên đĩa và khi gửi cho đối tác không phải gửi ảnh theo. Nếu bạn không xóa ảnh trên đĩa và luôn gửi ảnh kèm tập tin cho đối tác thì nên chèn link thôi để tập tin nhẹ. Trong trường hợp này sửa thành Mã:Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True Nếu ảnh không là JPG thì sửa ".jpg" thích hợp. Nếu ảnh ở thư mục con vd. Anh thì sửa ThisWorkbook.path & "\" thành ThisWorkbook.path & "\Anh\" Code phục vụ 2 cột là A và D. Nếu có thêm cột thì thêm vào trong ngoặc của Union([A2:A10000], [D2:D10000]) Cuối cùng là sub tổng quát InsertPicture: Mở tập tin -> Alt + F11 -> menu Insert -> Module -> dán code dưới vào Module vừa thêm. Để có thể dùng sub tổng quát InsertPicture trong những tập tin tương lai thì: chọn Module (click tên Module) -> menu File -> Export File -> duyệt tới thư mục cần lưu -> lưu lại với tên nào đó.BAS Code cho Module vừa thêm Mã:Sao chép. Sub InsertPicture(ByVal PicFilename As String, Optional Target As range = Nothing, _ Optional original As Boolean = False, Optional center As Boolean = False, _ Optional LinkToFile As Boolean = False) ' Target: vung nhap anh. Co the la nhieu cell ' Neu Target = Nothing thi Target = ActiveCell ' Neu original = True thi nhap anh kich thuoc thuc. ' Neu original = FALSE thi neu center = True thi anh se center trong vung Target, ' nguoc lai thi se vua khit vung Target ' LinkToFile = False thi khong can giu anh tren dia, nguoc lai bat buoc phai giu anh de moi lan mo thi co Dim w As Double, h As Double, shp As Shape, fso As Object If Target Is Nothing Then Set Target = ActiveCell On Error Resume Next Target.Parent.Shapes(Target.Address).Delete On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(PicFilename) Then If LinkToFile Then Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoTrue, msoFalse, Target.left, Target.top, 0, 0) Else Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoFalse, msoTrue, Target.left, Target.top, 0, 0) End If If Not shp Is Nothing Then With shp If original Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue ElseIf center Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue w = Target.Width h = w * .Height / .Width If h > Target.Height Then h = Target.Height w = h * .Width / .Height End If .left = Target.left + (Target.Width - w) / 2 .top = Target.top + (Target.Height - h) / 2 .Width = w .Height = h Else .Width = Target.Width .Height = Target.Height End If shp.Name = Target.Address shp.Placement = xlMoveAndSize End With End If End If Set fso = Nothing End Sub Nhấp chuột vào đây để mở rộng...
Bác batman ơi trường hợp em muốn mở rộng thêm cột hình thứ 3 thì code sửa lại như thế nào ạ? Em thêm vào If Intersect(Target, Union([A2:A10000], [D2:D10000],[xxxxxxxxxxx])) Is Nothing Then Exit Sub thì không chạy. Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,774 Được thích 9,768 Giả sử thêm cột G Mã:Sao chép. If Intersect(Target, Union([A2:A10000], [D2: D10000], [G2:G10000])) Is Nothing Then Exit Sub Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,774 Được thích 9,768 Dùng UserForm chắc không hợp với trường hợp của chủ chủ đề.
cả ngàn mã không thể gõ tay rồi enter được Nhấp chuột vào đây để mở rộng...
1000 mã hay 10 mã thì người ta cũng đã biết rồi. Chả lý gì lại tạo thêm UserForm rồi chọn trong ListBox. Rồi thì cũng phải dùng code để chèn hình. Dù là cách gì thì cũng phải hoặc chèn hình bằng tay hoặc chèn bằng code. Nếu dùng Linked Picture thì chính là chèn bằng tay. Linked Picture là tạo "khung" và dùng công thức. Nhưng tập tin phải đã có toàn bộ hình có trong kho, vì đơn giản là không thể biết được sẽ phải chèn hình nào. Nếu sheet không có vd. 93.jpg mà người ta lại gõ đúng mã đó thì lấy đâu ra hình để mà link? Mà chèn 100 hình không dùng code thì là chèn bằng tay. Ngồi "Insert -> Picture -> chọn tập tin" 100 lần có lẽ chết còn sướng hơn. Upvote 0 T

tam888

Thành viên tích cực
Tham gia 22/8/13 Bài viết 838 Được thích 510
batman1 đã viết: Dùng UserForm chắc không hợp với trường hợp của chủ chủ đề. 1000 mã hay 10 mã thì người ta cũng đã biết rồi. Chả lý gì lại tạo thêm UserForm rồi chọn trong ListBox. Rồi thì cũng phải dùng code để chèn hình. Dù là cách gì thì cũng phải hoặc chèn hình bằng tay hoặc chèn bằng code. Nếu dùng Linked Picture thì chính là chèn bằng tay. Linked Picture là tạo "khung" và dùng công thức. Nhưng tập tin phải đã có toàn bộ hình có trong kho, vì đơn giản là không thể biết được sẽ phải chèn hình nào. Nếu sheet không có vd. 93.jpg mà người ta lại gõ đúng mã đó thì lấy đâu ra hình để mà link? Mà chèn 100 hình không dùng code thì là chèn bằng tay. Ngồi "Insert -> Picture -> chọn tập tin" 100 lần có lẽ chết còn sướng hơn. Nhấp chuột vào đây để mở rộng...
Có cách nào file hình thì vẫn ở thư mục, file excel thì không nhúng hình, khi cần hiển thị thì mới hiển thị từ file của hình, nhưng thế thì file không phải chứa hình? Bác nghĩ Excel cho phép vậy không? Lưu ý chủ topic: file hình kiểu nhúng vào excel nên là hình nhỏ, dung lượng nhỏ thôi, còn nếu lớn mà nhiều thì file excel sẽ phình to Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
batman1 đã viết: Giả sử thêm cột G Mã:Sao chép. If Intersect(Target, Union([A2:A10000], [D2: D10000], [G2:G10000])) Is Nothing Then Exit Sub Nhấp chuột vào đây để mở rộng...
Em đã thêm và không được bác ơi.

File đính kèm

  • Cach 3 - Dung module giaiphapexcel.rar 33 KB · Đọc: 96
Upvote 0 T

tam888

Thành viên tích cực
Tham gia 22/8/13 Bài viết 838 Được thích 510
zukura đã viết: Em đã thêm và không được bác ơi. Nhấp chuột vào đây để mở rộng...
Tôi thấy bình thường mà, bạn phải nhập tên hình vào cột G, hay D, hay A Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,774 Được thích 9,768
tam888 đã viết: Có cách nào file hình thì vẫn ở thư mục, file excel thì không nhúng hình, khi cần hiển thị thì mới hiển thị từ file của hình, nhưng thế thì file không phải chứa hình? Bác nghĩ Excel cho phép vậy không? Lưu ý chủ topic: file hình kiểu nhúng vào excel nên là hình nhỏ, dung lượng nhỏ thôi, còn nếu lớn mà nhiều thì file excel sẽ phình to Nhấp chuột vào đây để mở rộng...
Cụ thể thì là thế nào? Tôi chưa hình dung được. Tức nhìn vào cell chả thấy gì. Nhưng khi bạn hô: "Hiện" thì tự dưng xuất hiện hình to nguyên bản, và khi hô: "Ẩn" thì cell lại "trắng tinh"? Mà làm sao Excel biết khi nào bạn hô? Upvote 0 T

tam888

Thành viên tích cực
Tham gia 22/8/13 Bài viết 838 Được thích 510
batman1 đã viết: Cụ thể thì là thế nào? Tôi chưa hình dung được. Tức nhìn vào cell cha thấy gì. Nhưng khi bạn hô: "Hiện" thì tự dưng xuất hiện hình to nguyên bản, và khi hô: "Ẩn" thì cell lại "trắng tinh"? Mà làm sao Excel biết khi nào bạn hô? Nhấp chuột vào đây để mở rộng...
Dạ, tức là hình không nhúng vào excel làm tăng dung lượng Chỉ khi mở file hoặc thay đổi giá trị tên hình thì hình mới được load lên. Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
tam888 đã viết: Dạ, tức là hình không nhúng vào excel làm tăng dung lượng Chỉ khi mở file hoặc thay đổi giá trị tên hình thì hình mới được load lên. Nhấp chuột vào đây để mở rộng...
Dung lượng đâu thành vấn đề vì ứng dụng chủ yếu gọi hình của những mặt hàng cần thiết thôi chứ không lưu hình 10.000 món hàng. Code sẽ tự Replace những hình cũ để thay bằng hình mới khi mình gõ mã mới -> không làm phình to file excel Nói chung mình thấy cách này quá tuyệt rồi. hihi Upvote 0
  • 1
  • 2
  • 3
Tiếp 1 of 3

Go to page

Tiếp tục Tiếp Last Bạn phải đăng nhập hoặc đăng ký để trả lời bài viết tại đây. Web KT

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

L Cần tách số từ dãy số ngăn cách bởi các dấu phẩy, sau đó xếp từng số vào các ô tương ứng
  • LINHCM
  • Hôm qua, lúc 20:21
  • Xử lý chuỗi ký tự
Trả lời 5 Đọc 142 Hôm nay lúc 21:40 hoangminhtien hoangminhtien DucAnnh mọi người chỉ em tìm giá sản phẩm với
  • DucAnnh
  • Hôm nay lúc 20:17
  • Hàm và công thức Excel
Trả lời 3 Đọc 50 Hôm nay lúc 21:19 Duy Tùng 9x Duy Tùng 9x N Cần hỗ trợ giải bài tập
    • Buồn
    • Cười
  • nnp2126
  • Hôm nay lúc 20:02
  • Hướng dẫn sử dụng các hàm trong Excel
Trả lời 0 Đọc 30 Hôm nay lúc 20:02 nnp2126 N N
  • Question
Cần giúp đỡ code VBA dùng google translate để đọc văn bản tiếng Việt?
  • nguyentam20255
  • Hôm nay lúc 18:28
  • Lập Trình với Excel
Trả lời 0 Đọc 1 Hôm nay lúc 18:28 nguyentam20255 N ongke0711
  • Question
Tải hóa đơn điện tử (https://hoadondientu.gdt.gov.vn/) Excel Vba
    • Thích
    • Yêu thích
    • Cảm ơn
  • ongke0711
  • 6/10/24
  • Lập Trình với Excel
12 13 14 Trả lời 271 Đọc 17K Hôm nay lúc 18:11 ongke0711 ongke0711 khoaitocolmelo bài tập về tin học quản lí
    • Buồn
  • khoaitocolmelo
  • Hôm nay lúc 17:01
  • Hàm và công thức Excel
Trả lời 0 Đọc 51 Hôm nay lúc 17:01 khoaitocolmelo khoaitocolmelo T LẤY SỐ LIỆU FILE SHEEL B QUA SHEEL B
  • TL85
  • Hôm nay lúc 14:28
  • Hướng dẫn sử dụng các hàm trong Excel
Trả lời 2 Đọc 73 Hôm nay lúc 16:35 HUONGHCKT H L [Xin giúp đỡ] Lấy thông tin ngày về nguyên liệu
    • Cười
  • Lá chanh
  • Hôm nay lúc 14:46
  • Tìm kiếm, dò tìm và tham chiếu
Trả lời 4 Đọc 82 Hôm nay lúc 16:23 DeTong D vinhmq.ptc3 Loại bỏ các ký trùng lặp được phân tách bằng dấu câu trong 01 ô tính
  • vinhmq.ptc3
  • Hôm nay lúc 16:03
  • Hàm và công thức Excel
Trả lời 0 Đọc 20 Hôm nay lúc 16:03 vinhmq.ptc3 vinhmq.ptc3 G Xếp lịch tổ chức giải Cầu lông
  • gatrong2003
  • 15/9/12
  • Ứng dụng cho lĩnh vực khác
Trả lời 9 Đọc 10K Hôm nay lúc 15:41 ngluan070890 N van khang 96
  • Đã giải quyết
xin giúp đỡ cách tạo nút chuyển dữ liệu giữa các sheet ạ. Cảm ơn các anh.
  • van khang 96
  • Hôm nay lúc 09:16
  • Lập Trình với Excel
Trả lời 7 Đọc 130 Hôm nay lúc 15:32 van khang 96 van khang 96 L Đếm số 0 liên tục nhiều nhất trong một dòng excel không liên tục về dữ liệu
  • LINHCM
  • Hôm nay lúc 13:34
  • Xử lý chuỗi ký tự
Trả lời 2 Đọc 77 Hôm nay lúc 14:11 Duy Tùng 9x Duy Tùng 9x GPE-Trợ Lý [GPE] TALK SHOW ĐỊNH KỲ
    • Thích
    • Yêu thích
    • Cảm ơn
  • GPE-Trợ Lý
  • Thứ năm lúc 10:07
  • Học tập Online
Trả lời 1 Đọc 237 Hôm nay lúc 11:02 GPE-Trợ Lý GPE-Trợ Lý GPE-Trợ Lý [GPE] TALK SHOW XLOOKUP() LÀM ĐƯỢC NHỮNG GÌ?
    • Thích
  • GPE-Trợ Lý
  • Hôm nay lúc 11:00
  • Học tập Online
Trả lời 0 Đọc 383 Hôm nay lúc 11:00 GPE-Trợ Lý GPE-Trợ Lý khoaibongvn Mình cần trợ giúp về hàm Vlookup
  • khoaibongvn
  • Hôm nay lúc 08:48
  • Giải thích, gỡ rối, xử lý lỗi công thức
Trả lời 4 Đọc 87 Hôm nay lúc 10:43 khoaibongvn khoaibongvn D Phần mềm office 365 Portable
  • duymax1234567
  • Hôm nay lúc 08:58
  • Office 365
Trả lời 0 Đọc 77 Hôm nay lúc 08:58 duymax1234567 D N Định mức nguyên vật liệu
  • nghiemcongdien
  • 9/11/24
  • Google Spreadsheets
2 Trả lời 39 Đọc 1K Hôm nay lúc 08:43 trannamhai051284 T J Hàm tách dữ liệu ra nhiều cột
  • jusend
  • Thứ tư lúc 16:43
  • Giải thích, gỡ rối, xử lý lỗi công thức
Trả lời 9 Đọc 362 Hôm nay lúc 08:32 DeTong D T Xin giúp đỡ lấy dữ liệu trong lịch học
  • thuong-minh
  • Thứ bảy lúc 11:10
  • Hàm và công thức Excel
Trả lời 4 Đọc 156 Hôm qua, lúc 21:05 HieuCD H DMQ
  • Question
Xóa dòng trùng.
  • DMQ
  • Thứ tư lúc 21:16
  • Lập Trình với Excel
2 Trả lời 20 Đọc 579 Hôm qua, lúc 18:39 DMQ DMQ Xem thêm… Chia sẻ: Facebook X (Twitter) Reddit Pinterest Tumblr WhatsApp Email Chia sẻ Link

Thành viên có số lượng bài viết cao nhất tháng

  • HUONGHCKT 5
  • Hoàng Tuấn 868 4
  • van khang 96 4
  • DMQ 3
  • khoaibongvn 3
  • DeTong 3
  • LINHCM 3
  • ptm0412 2
  • SA_DQ 2
  • GPE-Trợ Lý 2
  • ongke0711 2
  • DucAnnh 2
  • Duy Tùng 9x 2
  • Luan Nguyen 1 1
  • trannguyen197 1
  • ngocbaovu 1
  • HieuCD 1
  • trannamhai051284 1
  • ngluan070890 1
  • vinhmq.ptc3 1

Thành viên có điểm tương tác cao nhất tháng

  • Hoàng Tuấn 868 6
  • SA_DQ 6
  • HUONGHCKT 5
  • ptm0412 2
  • DMQ 2
  • HieuCD 2
  • GPE-Trợ Lý 2
  • hoangminhtien 2
  • hoangtuaotrang_hp_vn 1
  • ngocbaovu 1
  • khoaibongvn 1
  • Trang chủ
  • Diễn đàn
  • Lập Trình với Excel
  • Lập Trình với Excel
  • Website này sử dụng cookies. Tiếp tục sử dụng trang này, đồng nghĩa với việc bạn chấp nhận website sử dụng cookies. Chấp nhận Tìm hiểu thêm.…
Back Top Bottom

Từ khóa » Code Chèn ảnh Vào Excel Bằng Vba