【问题标题】:Converting text stored in Excel cell to a formula in VBA将存储在 Excel 单元格中的文本转换为 VBA 中的公式
【发布时间】:2015-03-29 06:43:44
【问题描述】:

我不确定这样的事情是否可行,我的同事告诉我,这是不可能的,因为字符串与公式的性质不同。 我要取字符串:

'"=" & ValRange.offset(0,0).address

在我的 VBA 例程中声明了一个范围并将其转换为公式。 在我的例程中,我有以下代码:

Sub GetRange()
Dim strSource As String
Dim HomeRange As Range
Dim ValRange As Range

Set ValRange = Range("k1")
Set HomeRange = Range("e6")

strSouce = HomeRange.Value
strSource = Replace(strSource, """", "")
Range("e7") = strSource

End Sub

如您所见,我已尝试删除字符,但它似乎不起作用(我理解目前的代码是它会删除所有引号但只是想用作示例。关于将其转换为公式的任何想法很感激。马特

【问题讨论】:

  • 你想把这个字符串转换成什么公式? Excel 公式还是 VBA 公式?
  • 我的想法是,当公式在 vba 中解析时,就像您在 VBA 例程中直接使用 strSource = "=" & ValRange.offset(0,0).address 一样,它会认识到 ValRange 是声明变量并解析确定。基本上,似乎在开始时的附加引号 ' 是问题所在。只是想知道是否有一些 replace(strSource,,) 命令可以将单元格字符串更改为 strSource = "=" & ValRange.offset(0,0).address。而不是 strSource = ""=" & ValRange.offset(0,0).address"
  • 只是为了确认我正在尝试获取单元格中的地址而不是值。
  • 什么单元格的地址?我真的不明白你想要做什么的细节。请具体说明您想要做什么。提供具体的例子而不是笼统的。您要转换的唯一字符串是否包含 VBA 偏移函数并返回地址?
  • 我怀疑,为了完成您想做的事情,您需要实际编写修改或创建新 VBA 代码的代码。这是高级编程,还需要更改信任中心设置以允许这样做(某些计算机病毒也使用这种技术)。有关详细讨论,请参阅 Chip Pearson 的Progamming in the VBA Editor

标签: excel vba


【解决方案1】:

假设您将 ValRange 定义为单元格 A1。在单元格 A2 中,您有行偏移值(例如 0),在单元格 A3 中,您有列偏移值(例如 2)。在单元格 A4 中,输入 =ADDRESS(ROW(OFFSET(A1,A2,A3)), COLUMN(OFFSET(A1,A2,A3))) 您将在单元格 A4 中获得 $C$1 作为您的值。

因此,这 2 个偏移量为您提供了一个您想要的适当偏移量的单元格。然后你把那个单元格的行和列发送到地址函数来获取你的地址。

要将该地址转换回偏移单元格中的值,请使用=INDIRECT(A4)。这将为您提供单元格 C1 中任何内容的值。

当然,如果您愿意,您可以只使用这些函数并从 VB 代码中调用它们。

【讨论】:

  • 谢谢...对不起,我只是以偏移量为例,我并没有真正想弄清楚如何获取值...我真的只是对转换字符串感兴趣 '"= " & ValRange.offset(0,0).address 只是 "=" & ValRange.offset(0,0).address 并将其解析为公式。我的琴弦很长,所以我减少了一根以获得精髓。似乎您不能将字符串更改为公式,因为字符串不能包含公式,并且您总是会收到应用程序错误...尽管如果我这样做 strForm = "=" & ValRange.offset(0,0) .address(一个字符串)并设置为可以解析的范围。
  • 好的...谢谢..我之前使用过 Evaluate...效果很好...我希望找出是否可以将字符串转换为公式。我仍然不确定为什么它不能,但我想我会感叹并继续前进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2021-05-26
相关资源
最近更新 更多