先说我的意图:
我打算写的代码,是让活动单元格ActiveCell的向左两个单元格(公式:“C[-2]”),与本行的第一个单元格(活动单元格在第1行时就是A1,第3行就是A3)比较。问题状况:· 首先定义了变量R,表示Row值R = ActiveCell.Row· 开始写成了ActiveCell.FormulaR1C1 = "=AR=RC[-2]"结果,显示在单元格里的值,假设点击在F4位置,为“=AR=D4”
· 于是我改成了TStr = "=A" + CStr(R) + "=RC[-2]"
ActiveCell.FormulaR1C1 = TStr结果我差点气死,值是:“='A4'=D4”无语了,怎么出来的定界符?
(可以肯定,在TStr变量中值还是“=A4=D4”,是设置到ActiveCell.FormulaR1C1中时被加入了定界符,可以在两行中间加一句“MsgBox TStr”去查看)* 请求大家的问题我只想要结果是“=A4=D4”
即比较这两个单元格的值是否相等。
只要能实现就行。
又要用A1就不行了
Excel把A1理解成一个名字(如命名区域)
所以多了个'出来你必须先求出Activecell的位置
再把相应的单元格表达为RC样式就可以了
'特别说明:本程序为递归调用,可视为10进制向26进制的转换,若需修改请谨慎
'--------------------------------------------------------------------------
'函数名:NumtoChar()
'功能:转化数字为字母序列。可以认为是10进制转26进制,以字母表示。
'特别说明:本函数是为了指示写入Excel表中列的位置而定制的。如果你想引用第一
' 列,输入1可以转换为"A",输入100可以转换为"CV"
'参数: INUM - 要转换的数字
'参数类型: 长整型。数值越大速度越慢,耗资源越多。建议控制在702以内保证效率
'返回值:字符串型。
'---------------------------------------------------------------------------
'程序: 日期:06/18/2005 修改时间:--/--/---- 修改次数:0
'===========================================================================
Public Function NumtoChar(ByVal INUM As Long) As String
Static S26 As String '静态,第一次定义时有效,递归中不再执行定义
S26 = "abcdefghijklmnopqrstuvwxyz" If INUM <= 26 Then '递归出口,错误修改此条件会导致程序崩溃
NumtoChar = Mid(S26, INUM, 1)
Else
'递归调用
'IIf()用于修正数值 与26整除的数会使结果出错误,必须减1修正数值
s = NumtoChar(IIf(INUM Mod 26 = 0, INUM \ 26 - 1, INUM \ 26))
'IIf()用于修正数值 与26整除的数会为0使程序出错,改为26以保正确
NumtoChar = s & Mid(S26, IIf(INUM Mod 26 = 0, 26, INUM Mod 26), 1)
End If
End Function