xin code VBA tự động chỉnh ảnh bằng với ô

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

kan1231

Thành viên chính thức
Tham gia
1/6/18
Bài viết
89
Được thích
45
Em hiện tại có 1 file muốn tự động căn chỉnh hình ảnh bằng với kích thước ô trong excel. Em có tìm được 1 code VBA trên mạng nhưng không tự căn chỉnh ảnh kín hết ô được ( ảnh đủ chiều ngang nhưng k đủ chiều cao hoặc ảnh đủ chiều cao nhưng ngang k đủ). Vậy nên em xin được mọi người giúp đỡ chỉnh sửa code VBA hoặc xin code VBA tự căn chỉnh ảnh vừa với ô dán ảnh ạ (hình ảnh kín ô) . Ảnh là sao chép/dán vào excel ạ
Em xin chân thành cảm ơn ạ
 

File đính kèm

  • chen anh.xlsm
    192.2 KB · Đọc: 32
Em hiện tại có 1 file muốn tự động căn chỉnh hình ảnh bằng với kích thước ô trong excel. Em có tìm được 1 code VBA trên mạng nhưng không tự căn chỉnh ảnh kín hết ô được ( ảnh đủ chiều ngang nhưng k đủ chiều cao hoặc ảnh đủ chiều cao nhưng ngang k đủ). Vậy nên em xin được mọi người giúp đỡ chỉnh sửa code VBA hoặc xin code VBA tự căn chỉnh ảnh vừa với ô dán ảnh ạ (hình ảnh kín ô) . Ảnh là sao chép/dán vào excel ạ
Em xin chân thành cảm ơn ạ
Bạn thử code này:
Mã:
Sub FitPic()
    If TypeName(Selection) = "Picture" Then
        With Selection
            .ShapeRange.LockAspectRatio = False
            .Height = .TopLeftCell.Height - 0.2
            .Width = .TopLeftCell.Width - 0.2
            .Top = .TopLeftCell.Top + 0.1
            .Left = .TopLeftCell.Left + 0.1
        End With
    Else
        MsgBox "Select a picture before running this macro."
    End If
End Sub
 
Upvote 0
Bạn có thể tham khảo hàm chỉnh ảnh bên bài viết bên này:


 
Upvote 0
Bạn thử code này:
Mã:
Sub FitPic()
    If TypeName(Selection) = "Picture" Then
        With Selection
            .ShapeRange.LockAspectRatio = False
            .Height = .TopLeftCell.Height - 0.2
            .Width = .TopLeftCell.Width - 0.2
            .Top = .TopLeftCell.Top + 0.1
            .Left = .TopLeftCell.Left + 0.1
        End With
    Else
        MsgBox "Select a picture before running this macro."
    End If
End Sub
dạ code được rồi ạ, cháu cảm ơn bác ạ
Bài đã được tự động gộp:

Bạn có thể tham khảo hàm chỉnh ảnh bên bài viết bên này:


dạ vâng, lâu lắm mới thấy anh đăng bài
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử code này:
Mã:
Sub FitPic()
    If TypeName(Selection) = "Picture" Then
        With Selection
            .ShapeRange.LockAspectRatio = False
            .Height = .TopLeftCell.Height - 0.2
            .Width = .TopLeftCell.Width - 0.2
            .Top = .TopLeftCell.Top + 0.1
            .Left = .TopLeftCell.Left + 0.1
        End With
    Else
        MsgBox "Select a picture before running this macro."
    End If
End Sub
Bác ơi có thể multiselect được không ạ?
Như bài em nhờ trước đó code tương tự mà không có ai trả lời Link
 
Upvote 0
Upvote 0
Bạn thêm vòng lặp vào sẽ chạy hết các ảnh.

Có phải ai cũng biết để trả lời được bạn đâu, giả sử có bạn nào đó biết thì cũng chưa chắc có thời gian rảnh mà.
Dạ vâng! Cảm ơn bác.
Ý em không phải là mọi người phải trả lời ạ. Em thêm smile buồn vào mà nó không hiện (em đang dùng trình duyệt trên điện thoại)
 
Upvote 0
Dạ vâng! Cảm ơn bác.
Ý em không phải là mọi người phải trả lời ạ. Em thêm smile buồn vào mà nó không hiện (em đang dùng trình duyệt trên điện thoại)
Từ code của anh huuthang_bd, mình thêm phần chọn tất cả ảnh và làm vừa ô excel. Các phần khác bạn tự nghiên cứu nhé.
1673095665091.png
 

File đính kèm

  • Chen anh.xlsm
    340.4 KB · Đọc: 49
Upvote 0
Dạ vâng! Cảm ơn bác.
Ý em không phải là mọi người phải trả lời ạ. Em thêm smile buồn vào mà nó không hiện (em đang dùng trình duyệt trên điện thoại)
Cho đồng chí này, nọ mới đào mộ xong. Người vẫn còn thấy lành lạnh nên nay chỉ đường thôi nhé.
Cách làm khác cách phát lộc phát, có điều đáp ứng được merge và fit trong khi chờ người nơi ấy.
Link: Hey
Trước mình test ổn cả rồi, vào đấy làm theo, cấm hỏi nữa nhé. Vì mình cũng chỉ biết đọc, làm theo, và được.
 
Upvote 0
Từ code của anh huuthang_bd, mình thêm phần chọn tất cả ảnh và làm vừa ô excel. Các phần khác bạn tự nghiên cứu nhé.
View attachment 285537
Em cảm ơn bác! em đã làm được.
Nếu có thể bác giúp em thêm với ạ.
1. đối với ô merge thì không sử dụng được ạ
2. em muốn vừa chỉnh ''vừa ô'' vừa "crop" theo như code dưới đây có áp dụng được không ạ?
PHP:
Sub CropAndCenter(ByVal shp As Shape, ByVal cLeft As Double, ByVal cTop As Double, ByVal cRight As Double, ByVal cBottom As Double)
Dim w As Double, h As Double, khung As Range
    With shp
        Set khung = shp.Parent.Range(.Name)
        .ScaleWidth 1, msoTrue
        .ScaleHeight 1, msoTrue
        With .PictureFormat
            .CropLeft = cLeft
            .CropRight = cRight
            .CropTop = cTop
            .CropBottom = cBottom
        End With
        w = khung.Width
        h = w * .Height / .Width
        If h > khung.Height Then
            h = khung.Height
            w = h * .Width / .Height
        End If
        .Left = khung.Left + (khung.Width - w) / 2
        .Top = khung.Top + (khung.Height - h) / 2
        .Width = w
        .Height = h
    End With
End Sub
- Cái dưới này em không biết chèn vô đâu
PHP:
        With ThisWorkbook.Worksheets("Sheet1")
            On Error Resume Next
            CropAndCenter .Shapes(cell_.Address), .Range("A1").Value, .Range("B1").Value, .Range("C1").Value, .Range("D1").Value
            On Error GoTo 0
        End With

Bài đã được tự động gộp:

Cho đồng chí này, nọ mới đào mộ xong. Người vẫn còn thấy lành lạnh nên nay chỉ đường thôi nhé.
Cách làm khác cách phát lộc phát, có điều đáp ứng được merge và fit trong khi chờ người nơi ấy.
Link: Hey
Trước mình test ổn cả rồi, vào đấy làm theo, cấm hỏi nữa nhé. Vì mình cũng chỉ biết đọc, làm theo, và được.
em cảm ơn bác. Cái em đang cần là chỉnh ảnh chứ không phải chèn ảnh.
Chèn ảnh hàng loạt vừa ô + crop ảnh em có code lấy của anh Batman1 rồi ạ. bác có cần em chia sẻ tham khảo ạ.
 

File đính kèm

  • Fit pic.xlsm
    407.7 KB · Đọc: 37
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom