楼主 raulerini |
题目: 将A1单元格设置为正方形 原代码1:
错误描述:运行时错误'1004':不能设置类Range的width 属性 分析和说明:上面这段代码简则简矣,直接将单元格的宽度等于高度,孰料却出现了我们最不希望见到的错误。仔细分析错误的原因,通过查看width属性和height属性的帮助,发现这两个属性都是只读的,这下就知道错在哪里了。 更正错误:range对象有另外两个属性,columnwidth和rowheight,这两个属性是可读写的,设置行高和列宽的时候需要用到的是这两个属性(关于height和rowheight的区别,大家自己去看帮助) 原代码2:
错误描述:设置的A1单元格根本不是正方形! 分析和说明:EXCEL中行高和列宽使用的单位是不一致的。Excel行高所使用单位为磅(1cm=28.6磅),列宽使用单位为1/10英寸(既1个单位为2.54mm)。 更正错误:需要对行高和列宽的度量单位进行统一,VBA中有一个inchestopoint方法可以对度量单位进行转换 原代码3:
错误描述:粗看上去好像是一个正方形,但实际上并不那么“正”,大家可以插入一个矩形看看,我测试时,插入的矩形高2.12,宽1.91。只是个伪正方形。 分析和说明:直接将columnwidth/10然后换算成磅不靠谱,inchestopoint方法不给力! 那么,这道题如何能简洁而准确的解出来呢? 让我们打开“EXCEL帮助”这本宝典,仔细的查看range的相关属性。最后,我们发现,width属性虽然是只读的,但与columnwidth不同,其是以磅为单位的!这无疑让我们豁然开朗,答案也呼之欲出: 正确解法:
这样得出来的A1单元格就是一个真真正正的正方形! 结论:当写代码碰到各种错误的时候,要仔细分析错误的原因,并且善于查找和利用各种信息,所谓内事不决看帮助,外事不决问百度也。 |
2楼 biaotiger1 |
思路更重要,这种解决问题的思路值得学习。 |