先说我的意图:
我打算写的代码,是让活动单元格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”
即比较这两个单元格的值是否相等。
只要能实现就行。

解决方案 »

  1.   

    你已经用 FormulaR1C1 指明使用RC样式
    又要用A1就不行了
    Excel把A1理解成一个名字(如命名区域)
    所以多了个'出来你必须先求出Activecell的位置
    再把相应的单元格表达为RC样式就可以了
      

  2.   

    大至是这个样子:activecell.FormulaR1C1="=RC[" & 1-activecell.Column & "]=RC[-2]"
      

  3.   

    改成了:ActiveCell.FormulaR1C1 = "=RC[" & -C + 1 & "]=RC[-2]"测试通过。谢谢了。
      

  4.   

    前两天CSDN不太好连接,回复不上来。所以拖了几天才回来。下面是我编的一个小过程,或许有用。放出来给大家。'==========================================================================
    '特别说明:本程序为递归调用,可视为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