range的Previous()和Next()可以获取当前区域的前一个或后一个单元格,但是我想获取当前区域前一个区或后一个区域怎么办啊(不是单元格)?
比如,rg的地址是C1,前面两个单元格A1和B1是合并的,那我使用rg1=rg.Previous(),返回的rg1地址是B1。怎么样才能得到合并的单元格首地址呢,即返回的是单元格A1。急求!!
好像EXCEL里面返回合并单元格的功能非常少,都是返回单一的单元格
这个问题困扰我好久了,期待这次能解决。
比如,rg的地址是C1,前面两个单元格A1和B1是合并的,那我使用rg1=rg.Previous(),返回的rg1地址是B1。怎么样才能得到合并的单元格首地址呢,即返回的是单元格A1。急求!!
好像EXCEL里面返回合并单元格的功能非常少,都是返回单一的单元格
这个问题困扰我好久了,期待这次能解决。
Previous方法是我在项目中用到的方法,未获得我所要的(获取合并单元格区域),所以才来求助的,以下是我今天测试的代码,获取的地址是B2,而不是合并区域的地址。由于用的是VS2008,因此Previous函数前有一个get_的附加,其实功能和Previous是一样的。
CRange rgMyRge,rgPreRge;
CString csAdd;
rgMyRge=m_wsMysheet.get_Range(COleVariant("C2"),vtMissing);//C2
rgPreRge=rgMyRge.get_Previous();//前一个区域
//由于我已经确定前一个区域是合并单元格,所以这里不进行是否是合并单元格的判断
csAdd = rgPreRge.get_Address(vtMissing,vtMissing,(long)1,vtMissing, vtMissing);//前一个区域地址
//调试获取的csAdd为"$B$2"
另附上EXCEL帮助Previous的说明:可以看到确实是返回单元格的,但同时也说明了作用是仿效 Shift+Tab。我试了Shift+Tab的效果却是选中前一个区域。这个矛盾我一直想不明白。
可能VC测试结果和VB测试结果不一样吧,或许我使用的参数不对?
话说csdn的相册怎么上传不了啊,一直提示请选择图片,我在百度空间上传了再插入,但是显示的是叉叉闹
用的是Previous.MergeArea.Address。这样取得的是合并区域的地址,如$A$1:$B$1。这样就能得到区域的第一个单元格地址。不知道VC是否可以实现,vba肯定没问题。