返回表示工作表行的字符串的函数

时间:2015-11-18 18:41:25

标签: excel vba excel-vba

我正在尝试创建一个函数(名为CreateRowRange),它将采用格式为“$ A $ 5”的字符串,并生成一个形式为“A5:M5”的字符串。同样,如果我用“$ A $ 14”调用该函数,它将返回“A14:M14”。我有一个Excel电子表格,其中包含“A”到“M”列中的数据。我在Stack Overflow(Concatenating Variables Into String to be Set to a Range in VBA)上发现了类似的帖子,但它看起来过于复杂。到目前为止为该函数编写的代码是:

Function CreateRowRange(CellAddress) As String
    CreateRowRange = Range(CellAddress).Row
End Function

3 个答案:

答案 0 :(得分:3)

这应该返回你想要的东西:

Function CreateRowRange(CellAddress) As String
    CreateRowRange = Range(Range(CellAddress),Range("M" & Range(CellAddress).Row)).Address(False,False)
End Function

答案 1 :(得分:2)

好的,试试这个:

Function CreateRowRange(CellAddress as String) as String
    CreateRowRange = Replace(CellAddress, "$", "")
    CreateRowRange = CreateRowRange & ":" & Replace(CreateRowRange, "A", "M")
End Function

答案 2 :(得分:0)

Excel已经内置了修改范围的属性和方法。如果您打算像

那样使用它
Range(CreateRowRange("$A$14")).Value = "X"

然后你可以用

实现同样的目的
Range("$A$14").Resize(1,13).Value = "X"

如果您正在构建类似

的公式
ActiveCell.Formula = "=SUM(" & CreateRowRange("$A$14") & ")"

然后你可以用

实现同样的目的
ActiveCell.Formula = "=SUM(" & Range("A14").Resize(1,13).Address(0,0) & ")"

0,0部分使地址相关 - 没有美元符号