在VBA中将variables连接到string以设置范围

我有一个特定的代码行的问题:

ActiveSheet.Range("A" & rowCount & ":" & Mid(alphabet, totHdrLngth, 1) & belowRowCount) 

字母是包含大写字母A到Z的string。

我不断收到以下错误:

 Run-time error '5': Invalid Procedure call or argument 

我试图创build一个string“inRange”,并将代码更改为:

 inRange = "A" & rowCount & ":" & Mid(alphabet, totHdrLngth, 1) & belowRowCount curRange = ActiveSheet.Range(inRange) 

但是这没有帮助(因为我认为不会)。 有什么build议么?

尽pipe创build这样的范围总体上是不被接受的,但是这样做的方式是用SET这个词(就像@Gary McGill在评论中所说的那样)。 这里是一个如何做到这一点的例子:

 Sub test() Dim alphabet As String Dim totHrdrLngth As Long Dim belowRowCount As Long Dim rowCount As Long Dim inRange As Range alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" totHrdrLngth = 5 belowRowCount = 10 rowCount = 5 ' Gives us A5:E10 Set inRange = Range("A" & rowCount & ":" & range2 & _ Mid$(alphabet, totHrdrLngth, 1) & belowRowCount) End Sub 

您在当前范围内运行此macros,所以不应该指定ActiveSheet.Range。 我希望这可以帮助你实现你正在努力实现的目标。

据我所知,你得到一个错误,因为你的types不匹配。 我想像rowCount是一个整数,如下面的RowCount。 如果在连接它们之前将它们转换为string,则可以修复它。 str()会将一个整数转换为一个前面有空格的string,而LTrim()将删除该空格。 尝试代码如下:

 Dim sRowCount As String Dim sBelowRowCount As String 

然后

 sRowCount = LTrim(Str(RowCount)) sBelowRowCount = LTrim(Str(belowRowCount)) inRange = "A" & sRowCount & ":" & Mid(alphabet, totHdrLngth, 1) & sBelowRowCount curRange = ActiveSheet.Range(inRange) 

希望这可以帮助。