Cách resize ảnh trong Excel

Khi thao tác trên excel, em thường copy hình trên mạng và bỏ vào excel. Nút lệnh này giúp mình tự resize ảnh theo kích thước của ô và move ảnh lọt vào ô để tránh ảnh chèn lên các đường kẻ. Nếu ảnh to hơn ô muốn chèn --> tự resize nhỏ lại Nếu ảnh nhỏ hơn ô muốn chèn --> tự phóng to ảnh ra Điều kiện: 1. Chọn ảnh, move góc trái trên cùng của ảnh nằm trong ô muốn chứa ảnh 2. Phải chọn ảnh, nếu ko sẽ hiện bảng thông báo. Em có copy trên mạng một module tên là fitpic Sau đó vẽ 1 rectangle và assign macro cho rectangle đó là fitpic Tuy nhiên giờ em muốn chỉnh sửa là mỗi lẫn click rectangle đó thì ảnh sẽ căn giữa ô [ngang dọc giữa hết] thì phải làm như thế nào ạ. Hiện tại nó toàn căn lề trái và top. Xin các cao thủ trợ giúp với ạ, em gửi cả code và file mẫu kèm theo

Public Sub FitPic[]On Error GoTo NOT_SHAPE Dim PicWtoHRatio As Single Dim CellWtoHRatio As Single With Selection PicWtoHRatio = .Width / .Height End With With Selection.TopLeftCell CellWtoHRatio = .Width / .RowHeight End With Select Case PicWtoHRatio / CellWtoHRatio Case Is > 1 With Selection .Width = .TopLeftCell.Width / 1.1 .Height = .Width / PicWtoHRatio End With Case Else With Selection .Height = .TopLeftCell.RowHeight / 1.1 .Width = .Height * PicWtoHRatio End With End Select With Selection .Top = .TopLeftCell.Top + 5 .Left = .TopLeftCell.Left + 5 End With Exit Sub NOT_SHAPE: MsgBox "HomeOffice Bot: Chon anh truoc khi click" End Sub

Sửa thành vầy thử xem:

Public Sub FitPic[] Dim pic As Picture If TypeOf Selection Is Picture Then Set pic = Selection Pic2Cel pic, [COLOR=#ff0000]pic.TopLeftCell[/COLOR], [COLOR=#0000cd]0.8[/COLOR] Else MsgBox "Chon anh truoc khi click" End If End Sub Private Sub Pic2Cel[ByVal pic As Picture, ByVal cel As Range, Optional ByVal dScale As Double = 1] Dim dist As Double, dWith As Double, dHeight As Double dWith = cel.Width * dScale dist = [cel.Width - dWith] / 2 dHeight = cel.Height - 2 * dist With pic .ShapeRange.LockAspectRatio = msoFalse .Placement = xlMoveAndSize .Left = cel.Left + dist: .Top = cel.Top + dist .Width = dWith: .Height = dHeight End With End Sub

Lưu ý:
- Chỗ màu đỏ [pic.TopLeftCell] là cell mà bạn muốn chèn hình. Ở đây tôi cho chèn hình vào cell gần với góc trái phía trên của hình. Nếu muốn chèn vào cell cố định nào đó thì sửa chỗ này [chẳng hạn là Range["A1"] ]
- Chỗ màu xanh [0.8] là tỉ lệ thu nhỏ [hoặc phóng to]. Nếu bạn không ghi gì cả thì nó sẽ chèn vừa khít với cell. Nếu con số này lớn hơn 1 thì hình sẽ tràn ra khỏi cell

Lần chỉnh sửa cuối: 4/11/16

Sửa thành vầy thử xem:

Public Sub FitPic[] Dim pic As Picture If TypeOf Selection Is Picture Then Set pic = Selection Pic2Cel pic, [COLOR=#ff0000]pic.TopLeftCell[/COLOR], [COLOR=#0000cd]0.8[/COLOR] Else MsgBox "Chon anh truoc khi click" End If End Sub Private Sub Pic2Cel[ByVal pic As Picture, ByVal cel As Range, Optional ByVal dScale As Double = 1] Dim dist As Double, dWith As Double, dHeight As Double dWith = cel.Width * dScale dist = [cel.Width - dWith] / 2 dHeight = cel.Height - 2 * dist With pic .ShapeRange.LockAspectRatio = msoFalse .Placement = xlMoveAndSize .Left = cel.Left + dist: .Top = cel.Top + dist .Width = dWith: .Height = dHeight End With End Sub

Lưu ý:
- Chỗ màu đỏ [pic.TopLeftCell] là cell mà bạn muốn chèn hình. Ở đây tôi cho chèn hình vào cell gần với góc trái phía trên của hình. Nếu muốn chèn vào cell cố định nào đó thì sửa chỗ này [chẳng hạn là Range["A1"] ]
- Chỗ màu xanh [0.8] là tỉ lệ thu nhỏ [hoặc phóng to]. Nếu bạn không ghi gì cả thì nó sẽ chèn vừa khít với cell. Nếu con số này lớn hơn 1 thì hình sẽ tràn ra khỏi cell

Dạ em cám ơn thầy nhiều lắm ạ. Em đã test cách của thầy và thành công, nhưng khi scale lại không theo tỉ lệ ạ. Ảnh nó bị dẹt ra chứ ko scale cùng lúc dài và rộng được ạ. Sửa chỗ nào để nó tự lấy tỉ lệ dài/rộng ban đầu rồi nếu scale 1 chiều dài thì chiều rộng sẽ scale theo tỉ lệ đã tính trước đó [hoặc ngược lại] vậy thầy. Như đoạn code cũ thì nó lấy tỉ lệ từ đầu nên ảnh dù to hay nhỏ khi scale lại vào ô đều không bị biến dạng 1 chiều. Rất mong thầy chỉ giáo em thêm ạ. Em đang tập tành VBA ^_^. Em gửi kèm hình bên dưới cho thầy xem ạ:

Dạ em cám ơn thầy nhiều lắm ạ. Em đã test cách của thầy và thành công, nhưng khi scale lại không theo tỉ lệ ạ. Ảnh nó bị dẹt ra chứ ko scale cùng lúc dài và rộng được ạ. Sửa chỗ nào để nó tự lấy tỉ lệ dài/rộng ban đầu rồi nếu scale 1 chiều dài thì chiều rộng sẽ scale theo tỉ lệ đã tính trước đó [hoặc ngược lại] vậy thầy. Như đoạn code cũ thì nó lấy tỉ lệ từ đầu nên ảnh dù to hay nhỏ khi scale lại vào ô đều không bị biến dạng 1 chiều. Rất mong thầy chỉ giáo em thêm ạ. Em đang tập tành VBA ^_^. Em gửi kèm hình bên dưới cho thầy xem ạ:

View attachment 168056

Tôi chưa hiểu?
Bạn muốn thế nào cứ đưa file lên đây nhé

Tôi chưa hiểu?
Bạn muốn thế nào cứ đưa file lên đây nhé

Dạ Thầy ơi em gửi file excel mẫu nè Thầy.

Ý em là code của thầy giúp em cố định ảnh vào giữa cell, nhưng ảnh sẽ bị dẹt nếu chiều rộng cell đó hẹp, nó sẽ bị dẹt ảnh. Thầy xem file excel em đính kèm theo trả lời này giúp em nha thầy.

Như chúng ta đã biết, Microsoft Excel hỗ trợ tự động thay đổi kích thước chiều cao hàng và chiều rộng cột của ô để phù hợp với nội dung đã điền, chẳng hạn như một chuỗi văn bản dài. Tuy nhiên, lệnh AutoFit Row Height và lệnh AutoFit column Width không hợp lệ đối với ảnh, vì ảnh được chèn không nằm trong một ô cụ thể. Vì vậy, trong bài viết này, Gitiho sẽ hướng dẫn bạn cách tự động thay đổi kích thước ô để vừa hình ảnh trong Excel nhé!

Xem thêm: Hướng dẫn cách viết các hàm trong Excel chi tiết, dễ hiểu nhất

Tuyệt đỉnh Excel: Trở thành bậc thầy Excel sau 16 giờ

Thay đổi kích thước ô để vừa hình ảnh trong Excel

Chèn ảnh vào ô trong Excel

Dưới đây là các bước để chèn ảnh vào ô trong Excel:

1. Chuyển đến tab Insert.
2. Nhấp vào tùy chọn Pictures [nằm trong nhóm hình minh họa].

3. Trong hộp thoại 'Insert Picture', xác định vị trí ảnh bạn muốn chèn vào một ô trong Excel.

5. Định dạng lại kích thước hình ảnh nếu cần

6. Đặt hình ảnh vào ô: Một cách thú vị khác để đặt hình ảnh vào ô là trước tiên nhấn phím ALT và sau đó di chuyển hình ảnh bằng chuột. Nếu bạn có nhiều hình ảnh, bạn có thể chọn và chèn tất cả các hình ảnh cùng một lúc [như được hiển thị trong bước 4].

Bạn cũng có thể thay đổi kích thước hình ảnh bằng cách chọn hình ảnh và kéo các cạnh. Trong trường hợp logo hoặc hình ảnh sản phẩm, bạn có thể muốn giữ nguyên tỷ lệ của hình ảnh. Để giữ nguyên tỷ lệ khung hình, hãy sử dụng các góc của hình ảnh để thay đổi kích thước.

Khi bạn đặt một hình ảnh trong một ô bằng cách sử dụng các bước trên, nó sẽ không dính với ô trong trường hợp bạn thay đổi kích thước, lọc hoặc ẩn ô. Nếu bạn muốn hình ảnh dính vào ô, bạn cần khóa hình ảnh vào ô mà nó được đặt.

Thay đổi kích thước ô để vừa hình ảnh bằng VBA

Giả sử có hai hình ảnh lớn trong một trang tính, hãy xem ảnh chụp màn hình sau đây. Bạn có thể muốn thay đổi kích thước ô để vừa với ảnh phía trên ô. Nhưng làm thế nào để thực hiện.


Tất nhiên, bạn có thể tự động thay đổi kích thước ô để vừa với các bức ảnh phía trên chúng. Tuy nhiên, điều đó vô cùng tẻ nhạt và tốn thời gian. Trên thực tế, chúng ta có thể áp dụng macro VBA để thay đổi kích thước tất cả các ô cho vừa với hình ảnh phía trên chúng. Bạn có thể thực hiện theo các bước sau:

  • Bước 1: Giữ phím ALT + F11 và nó sẽ mở ra cửa sổ Microsoft Visual Basic for Applications.
  • Bước 2: Nhấp vào Insert > Module và dán macro sau vào cửa sổ môđun.

Mã VBA: Thay đổi kích thước ô để vừa với hình ảnh.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

Sub ResizePictureCells[]

For Each Picture In ActiveSheet.DrawingObjects

PictureTop = Picture.Top

PictureLeft = Picture.Left

PictureHeight = Picture.Height

PictureWidth = Picture.Width

For N = 2 To 256

If Columns[N].Left > PictureLeft Then

PictureColumn = N - 1

Exit For

End If

Next N

For N = 2 To 65536

If Rows[N].Top > PictureTop Then

PictureRow = N - 1

Exit For

End If

Next N

Rows[PictureRow].RowHeight = PictureHeight

Columns[PictureColumn].ColumnWidth = PictureWidth * [54.29 / 288]

Picture.Top = Cells[PictureRow, PictureColumn].Top

Picture.Left = Cells[PictureRow, PictureColumn].Left

Next Picture

End Sub

Khi bạn đã chèn hình ảnh vào cửa sổ làm việc, thay đổi kích thước hình ảnh vừa với ô và đặt vừa vào ô, bạn cần khóa nó để đảm bảo hình ảnh của bạn để di chuyển, lọc và ẩn với ô.

Dưới đây là các bước để khóa ảnh trong ô:

  1. Bấm chuột phải vào ảnh và chọn Format Picture. 
  2. Trong hộp thoại Format Picture, chọn Size & Properties và với các tùy chọn trong Properties - thuộc tính, hãy chọn '‘Move and size with cells’'.


Như vậy, hình ảnh của bạn đã khóa vào ô, khi bạn ẩn ô hoặc di chuyển ô, hình ảnh của bạn cũng ẩn hoặc di chuyển theo.

Xem thêm: 25 kỹ năng Excel mà bạn nên biết từ cơ bản, trung cấp đến nâng cao

Kết luận

Hy vọng bài viết này đã giúp bạn hiểu hơn về cách thay đổi kích thước ô để vừa hình ảnh và cách khóa hình ảnh trong ExcelNếu bạn có bất kỳ câu hỏi nào liên quan đến bài viết này hoặc về bất kỳ chủ đề Excel nào khác, hãy cho chúng mình biết trong phần bình luận bên dưới. Và đừng quên theo dõi chúng mình để xem thêm các bài viết bổ ích khác nhé!

Nếu các bạn muốn có tư duy chủ động khi làm việc với Excel, xử lý được mọi tình huống mà không cần tốn thời gian ngồi tìm giải pháp trên mạng thì hãy đăng ký khóa học Tuyệt đỉnh Excel của Gitiho. Chương trình học được xây dựng bởi các chuyên gia tin học văn phòng hàng đầu, có nhiều năm kinh nghiệm giảng dạy cho nhân sự các tập đoán lớn. Các bạn sẽ học cùng chương trình với nhân viên của Samsung, TH True Milk, VP Bank, Vietinbank,... khi đăng ký khóa học này. Giảng viên cũng luôn sẵn lòng giải đáp mọi thắc mắc của bạn trong vòng 24h. Hãy đăng ký ngay để nâng cao khả năng sử dụng Excel, giúp bạn làm việc hiệu quả hơn gấp bội nhé!

Gitiho.com Nền tảng học online duy nhất tại Việt Nam tập trung vào phát triển kỹ năng làm việc dành cho người đi làm

Với sứ mệnh: “Mang cơ hội phát triển kỹ năng, phát triển nghề nghiệp tới hàng triệu người”, đội ngũ phát triển Gitiho.com đã và đang làm việc với những học viện, trung tâm đào tạo, các chuyên gia đầu ngành để nghiên cứu và xây dựng lên các chương trình đào tạo từ cơ bản đến chuyên sâu xung quanh các lĩnh vực: Tin học văn phòng, Phân tích dữ liệu, Thiết kế, Công nghệ thông tin, Kinh doanh, Marketing, Quản lý dự án...

Gitiho tự hào khi được đồng hành cùng:

  • 50+ khách hàng doanh nghiệp lớn trong nhiều lĩnh vực như: Vietinbank, Vietcombank, BIDV, VP Bank, TH True Milk, VNPT, FPT Software, Samsung SDIV, Ajinomoto Việt Nam, Messer,…
  • 100.000+ học viên trên khắp Việt Nam

Nếu bạn quan tâm đến các khóa tin học văn phòng của Gitiho, với mong muốn giỏi tin học để tăng năng suất làm việc lên gấp 5 lần, hãy truy cập ngay TẠI ĐÂY để tìm cho mình khóa học phù hợp nhé!




Video liên quan

Chủ Đề