将一个字母分配给字符串变量

问题描述 投票:0回答:2

我的代码:

Dim ws_fe As Worksheet
Set ws_fe = ActiveWorkbook.Worksheets("xx")

Dim ws_de As Worksheet
Set ws_de = ActiveWorkbook.Worksheets("xxx")

Dim a as string
a = B

ws_fe.Cells(5, 10).FormulaR1C1 = "=IF(RC[-4]="""","""",RC[-5]-" & a & 6

我想为“B6”分配一个范围,但我得到的 a 值是:

  • 当输入a=B时,我得到a=什么都没有(就像Excel中的范围B一样,单元格中没有值)(如果我在A:A中输入了一些东西,他会选择第一个值)
  • 当输入一个=“B”时,我得到一个=“B”

问题是 R1C1 公式不仅识别 B,还识别“B”,这在分配范围时会出现问题,因为这会得到“B”6 而不是 B6

如何才能让 VBA 正确识别 B 为简单字符串 B ?

我期待的是:

ws_fe.Cells(5, 10).FormulaR1C1 = "=IF(RC[-4]="""","""",RC[-5]-" & a & 6 = =if(rxcx= "" ; "" ; rxcx - B6)
vba string excel-formula range excel-2010
2个回答
0
投票

如果a=“B”

H28 单元格中的公式

"=IF(RC[-4]="""","""",RC[-5]-R" & columns(a).column & "C6)"

给出结果

=IF(D28="","",C28-$F$2)

还有这个

"=IF(RC[-4]="""","""",RC[-5]-R[" & columns(a).column & "]C[6])"

结果

=IF(D28="","",C28-N30)

0
投票

您的代码由于多种原因而无法工作。

  • 您没有强制声明变量,因此当它到达
    a = B
    时,代码很乐意将 B 定义为空变量。
    选择选项〜编辑器选项卡〜需要变量声明,每个新模块将在模块顶部包含文本Option Explicit,它将指出错误。
  • 你的公式是混合R1C1和A1公式参考。如果这是您想要的单元格引用,
    R6C2
    适用于 B6。
  • 您的公式不包含最后的右括号。

将两行更改为

a = "C2"
ws_fe.Cells(5, 10).FormulaR1C1 = "=IF(RC[-4]="""","""",RC[-5]-R6" & a & ")"  

会将公式

=IF(F5="","",E5-$B$6)
添加到单元格
J5

© www.soinside.com 2019 - 2024. All rights reserved.