Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2263|回复: 8

输入编号图片自动充满表格四面分中问题!

[复制链接]
发表于 2020-3-23 15:15 | 显示全部楼层 |阅读模式
本帖最后由 东方胜 于 2020-3-23 15:16 编辑

各位老师您好!
我的附件中的这个表,输入编号后图片只能以宽分中,但高度就超出了表格,能让图片不变形自动缩中吗?谢谢!
135215hj7c1jkkwt27cnz2.png

图片大小自动置中.rar

337.6 KB, 下载次数: 7

发表于 2020-3-24 10:17 | 显示全部楼层
jgutg.gif

excel2010运行后,没看到1楼图片里红箭头的情况?
回复

使用道具 举报

 楼主| 发表于 2020-3-24 15:44 | 显示全部楼层
爱疯 发表于 2020-3-24 10:17
excel2010运行后,没看到1楼图片里红箭头的情况?

老师您好,画红线的地方超出第一个表框了,它只以宽为准,可高就超出了!
捕获.PNG
回复

使用道具 举报

发表于 2020-3-25 11:36 | 显示全部楼层
Private Sub Worksheet_Change(ByVal T As Range)
    Dim p, f, x
    If T.Row Mod 11 <> 1 Or T.Column <> 6 Or T.Count <> 1 Or T.Value = "" Then Exit Sub
    p = ThisWorkbook.Path
    f = "Picture " & T.Row
    Set x = Cells(T.Row, 1).MergeArea

    Me.Unprotect

    '1)删除
    On Error Resume Next
    Me.Shapes(f).Delete
    On Error GoTo 0

    '2)添加
    With Me.Pictures.Insert(p & "\图片\" & T.Value & ".jpg")
        .Name = f
        .ShapeRange.LockAspectRatio = msoFalse
        .Left = x.Left
        .Top = x.Top
        .Height = x.Height
        .Width = x.Width
    End With

    Me.Protect

End Sub




图片大小自动置中2.rar (351.19 KB, 下载次数: 5)
回复

使用道具 举报

 楼主| 发表于 2020-3-27 15:14 | 显示全部楼层
爱疯 发表于 2020-3-25 11:36
Private Sub Worksheet_Change(ByVal T As Range)
    Dim p, f, x
    If T.Row Mod 11  1 Or T.Column  ...

谢谢老师,非常感谢,要是随比例,不变就好了!
回复

使用道具 举报

发表于 2020-3-27 15:53 | 显示全部楼层
东方胜 发表于 2020-3-27 15:14
谢谢老师,非常感谢,要是随比例,不变就好了!

图片的宽高比例和图片所在区域宽高比例,要一样才行。如果不能保证这点,我就没办法了。
回复

使用道具 举报

 楼主| 发表于 2020-3-27 18:28 | 显示全部楼层
爱疯 发表于 2020-3-27 15:53
图片的宽高比例和图片所在区域宽高比例,要一样才行。如果不能保证这点,我就没办法了。

爱疯老师您好,是这样的,图片不变形,如果高达到了,宽就随比例。如果宽达到了,高就随比例,四边分中就好了,谢谢老师!
2.PNG
1.PNG
回复

使用道具 举报

 楼主| 发表于 2020-4-2 20:17 | 显示全部楼层
自已顶一下!
回复

使用道具 举报

发表于 2020-4-3 10:30 | 显示全部楼层
本帖最后由 爱疯 于 2020-4-3 10:34 编辑

Private Sub Worksheet_Change(ByVal T As Range)
    Dim p As String
    Dim f As String
    Dim Rng As Range


    If T.Row Mod 11 <> 1 Or T.Column <> 6 Or T.Count <> 1 Or T.Value = "" Then Exit Sub
    p = ThisWorkbook.Path & "\图片\"
    f = "Picture " & T.Row
    Set Rng = Cells(T.Row, 1).MergeArea
    Me.Unprotect


    On Error Resume Next
    Me.Shapes(f).Delete
    On Error GoTo 0


    With Me.Pictures.Insert(p & T.Value & ".jpg")
        .Name = f
        .ShapeRange.LockAspectRatio = msoTrue
        .Left = Rng.Left
        .Top = Rng.Top

        '>>>
        '前提条件:(A:D)区域的宽,必须大于等于所有的图片宽
        .Height = Rng.Height    '高度一致
        '.Width = Rng.Width      '不设置图片宽,改为右移图片
        .Left = Rng.Left + (Rng.Width - .Width) / 2    '为什么只是右移?因为满足前提条件
        '<<<

    End With


    Me.Protect
End Sub


图片大小自动置中3.rar (336.55 KB, 下载次数: 6)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 19:29 , Processed in 0.545657 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表