【问题标题】:Pass string into Range Function in VBA将字符串传递给VBA中的范围函数
【发布时间】:2015-03-22 16:41:33
【问题描述】:

我正在尝试在函数中创建一个范围,但范围有所不同,因此我将把定义作为字符串传递,但我遇到了一个错误,因为它说“需要一个数组”。所以,我认为这是因为没有包含双引号,所以我试图通过在双引号上加倍来将它们包含在字符串中,但现在 VBA 说我在那个字符串中有一个无效字符(那是第一个美元符号) .我真的很困惑如何解决这个问题。任何帮助将不胜感激。

gRange = ""$A$1:$F$2""

【问题讨论】:

  • 你能显示函数头和对它的调用吗?你不应该使用双引号。
  • 什么是gRange?它可能是数组变量......
  • 至少显示你的函数的代码......如果它需要一个ayyay,也许Sheets("whatever").range(gRange).value是数组。也忘了双引号, gRange 是一个字符串

标签: string vba excel range


【解决方案1】:

每当我在 VBA 中遇到字符串中有多余引号的问题时,我总是使用 Chr(34) 来替换。

gRange = Chr(34) & "$A$1:$F$2" & Chr(34)

Chr() MSDN Reference

【讨论】:

  • ChartData.ActiveSheet.ListObjects("Table1").Resize Range(Range)
  • gRange 在函数中作为Range 传入
  • @NeilCaffrey 我不确定您是否可以像这样使用变量Range,因为它已经“受保护”。如果你使用ChartData.ActiveSheet.ListObjects("Table1").Resize Range(gRange) 会发生什么
  • 我最终找到了使用 IF 语句的解决方案。
【解决方案2】:

我找到了一个使用 if 语句的解决方案,如下所示:

If sheetName = "Totals" Then
ChartData.ActiveSheet.ListObjects("Table1").Resize Range("$A$1:$F$2")
Else
ChartData.ActiveSheet.ListObjects("Table1").Resize Range("$A$1:$G$2")
End If

而不是使用字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多