ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] [已解决!]单元格插入图片变形问题,如何调整代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-3-27 11:43 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 lybwr8 于 2012-3-27 22:32 编辑

插图测试.rar (11.97 KB, 下载次数: 38)
附件中有个窗体,请调出来测试一下,谢谢


If Selection.ShapeRange.Height*0.875>Selection.ShapeRange.Width Then'单元格宽:长=0.875
    MsgBox "
坚图"
   Selection.ShapeRange.Height = 400
Else
   MsgBox "
横图"
   Selection.ShapeRange.Width = 455
End If

在一个单元格中插入图片,要对图片进行等比例缩放,如果图片过高就限定高度,如果图片过宽就要限定宽度,反正不能超过单元格大小,现在是:选择图片时,坚图没有变形,横图却被横向压缩了,哪里设置不对啊

TA的精华主题

TA的得分主题

发表于 2012-3-27 12:06 | 显示全部楼层
参考:

★利用有效性信息批量调用信息和图片★        http://club.excelhome.net/thread-529975-1-1.html

TA的精华主题

TA的得分主题

发表于 2012-3-27 13:29 | 显示全部楼层
加上这句
Selection.ShapeRange.LockAspectRatio = msoTrue

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-27 14:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
doitbest 发表于 2012-3-27 13:29
加上这句
Selection.ShapeRange.LockAspectRatio = msoTrue

我发现插入横图中,始终将纵向约定到了400,所以出现变形。也就是说,在执行select后,纵向约定就初始到400,不论后面怎么IF都不行了。楼上的办法没行通

TA的精华主题

TA的得分主题

发表于 2012-3-27 14:13 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-27 15:07 | 显示全部楼层
doitbest 发表于 2012-3-27 14:13
你上个附件吧

插图测试.rar (11.97 KB, 下载次数: 30)


请帮助测试并修改一下,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-27 16:08 | 显示全部楼层
本帖最后由 lybwr8 于 2012-3-27 20:09 编辑

哎,上了附件又不看,无赖

字打错了,应该是无奈,引起了误会,很是歉意。

TA的精华主题

TA的得分主题

发表于 2012-3-27 17:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Public Sub qqq()
  2. Dim x As Range, h, w
  3. If TypeName(Selection) = "Range" Then Exit Sub
  4. Selection.ShapeRange.LockAspectRatio = msoTrue
  5. For Each x In Selection.TopLeftCell.MergeArea.Columns
  6.     w = w + x.Width
  7. Next
  8. For Each x In Selection.TopLeftCell.MergeArea.Rows
  9.     h = h + x.Height
  10. Next
  11. If Selection.ShapeRange.Height * 0.875 > Selection.ShapeRange.Width Then '单元格宽:长=0.875
  12.     MsgBox "竖图"
  13.     Selection.Left = Selection.TopLeftCell.MergeArea(1).Left
  14.     Selection.Top = Selection.TopLeftCell.MergeArea(1).Top
  15.    Selection.ShapeRange.Height = h
  16.    If Selection.ShapeRange.Width > w Then Selection.ShapeRange.Width = w
  17. Else
  18.    MsgBox "横图"
  19.    Selection.Left = Selection.TopLeftCell.MergeArea(1).Left
  20.    Selection.Top = Selection.TopLeftCell.MergeArea(1).Top
  21.    Selection.ShapeRange.Width = w
  22.    If Selection.ShapeRange.Height > h Then Selection.ShapeRange.Height = h
  23. End If
  24. End Sub

复制代码




TA的精华主题

TA的得分主题

发表于 2012-3-27 17:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好心帮你却恶语相向!让我怎么说呢…………

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-27 19:01 | 显示全部楼层
本帖最后由 lybwr8 于 2012-3-27 20:10 编辑
doitbest 发表于 2012-3-27 17:48
好心帮你却恶语相向!让我怎么说呢…………

天啊,我字打错了,我是说我感到无奈,不是骂你啊,我不至于这么无素质吧。对此表示深深歉意
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-30 01:27 , Processed in 0.057508 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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