ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 15968|回复: 6

[求助] 在ecxel中插入图片使其自动适应单元格大小,如何利用宏实现?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-7-15 14:36 | 显示全部楼层 |阅读模式
要在ecxel中插入很多图片,为了整洁美观,使插入的图片自动适应单元格大小,分辨率不降低。

(有些图片插入第一列,有些插入第二列。根据具体情况插入。)

如何利用宏实现?

我是录制了一个宏。宏的过程是:单击第一列的单元格---插入图片---双击图片---设置图片格式--大小--比例18%--停止。

宏是录下来了,但是再次插入图片到第二列单元格的时候,按“加载宏”之后,不知道该如何操作了?

希望各位大侠指点下。

http://club.excelhome.net/viewthread.php?tid=331780的帖子只能给某一列的用。因为我现在是有些图片插入第一列,有些插入第二列。根据具体情况插入。所以不知道怎么处理了。另外对vba也不懂,不知道如何修改。汗颜!

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-15 14:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-7-15 15:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-15 16:25 | 显示全部楼层
研究了一下前人的经验。最后加入这个代码了。可以实现了。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub '如果选择一个区域时,退出程序
   Dim cFile$, oShape As Shape, nW, nH '声明变量
    Application.ScreenUpdating = False '禁止屏幕刷新
    Application.EnableEvents = False
    On Error Resume Next
    Set oShape = Me.Shapes("t_" & Target.Address(0, 0))
    If Not oShape Is Nothing Then Exit Sub '如果存在图片时,退出程序
    If ThisWorkbook.Application.Dialogs(342).Show Then '插入图片
        With Selection
            .Name = "t_" & Target.Address(0, 0) '重命名
            nW = Target.Width / .Width '缩放比例
            nH = Target.Height / .Height
            If nW < nH Then '以宽度为标准缩放
                .ShapeRange.IncrementTop (Target.Height - .Height * nW) / 2
                .ShapeRange.ScaleWidth nW, 0, 0
                .ShapeRange.ScaleHeight nW, 0, 0
            Else '以高度为标准缩放
                 .ShapeRange.IncrementLeft (Target.Width - .Width * nH) / 2
                .ShapeRange.ScaleWidth nH, 0, 0
                .ShapeRange.ScaleHeight nH, 0, 0
            End If
        End With
        Target.Activate
    End If
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub


==============================================================

但是如何限定只在B,C两列才是插入图片。 其他的不要加载这个vba?

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-15 16:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢轮回大侠!呵呵

TA的精华主题

TA的得分主题

发表于 2019-2-16 01:31 | 显示全部楼层
如何限定只在B,C两列才是插入图片,其它不加载。   这解决了吗

TA的精华主题

TA的得分主题

发表于 2022-11-22 19:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
laierxl8103 发表于 2010-7-15 16:25
研究了一下前人的经验。最后加入这个代码了。可以实现了。

Private Sub Worksheet_SelectionChange(ByVa ...

能帮我看下这个代码怎们改吗
https://club.excelhome.net/thread-1646636-1-1.html
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-5 14:40 , Processed in 0.035390 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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