Excel VBA范围

对于下面的代码,我设置的范围似乎没有出来。 基本上我想连接从A2到A23的值。 我的数据转到单元格A24。

我已经命名单元格A24为“WrapNarrEnd”,因为有时我想添加额外的行,所以我想“WrapNarrEnd”是不变的。 我尝试使用偏移值来获取单元格之前“WrapNarrEnd”一切工作,直到第二个最后一行,我不知道我要去哪里错了。 有人可以帮我吗?

Function ConcatMe(Rng As Range) As String Dim cl As Range ConcatMe = "" For Each cl In Rng ConcatMe = ConcatMe & " " & cl.Text Next cl End Function 

 Sub test2() Dim WrapNarrative As Range Dim WrapEnd As Range Set WrapEnd = Sheets("CA Sweeps").Range("WrapNarrEnd").Offset(-1, 0) **Set WrapNarrative = Sheets("CA Sweeps").Range("A2:wrapnarrend")** Sheets("CA Sweeps").Range("I24").Value = ConcatMe(WrapNarrative) End Sub 

示例图像:

范围参考的语法是错误的。 你需要Range(<TopLeftCell>, <BottomRightCell>)

此外,您的ConactMefunction可以被保留。

这是你的代码,重构

 Function ConcatMe(Rng As Range, Optional Sep As String = vbNullString) As String Dim dat As Variant If Rng.Columns.Count = 1 Then dat = Application.Transpose(Rng.Value) ConcatMe = Join(dat, Sep ) ElseIf Rng.Rows.Count = 1 Then dat = Application.Transpose(Application.Transpose(Rng.Value)) ConcatMe = Join(dat, Sep ) Else ' what do you want to do now? End If End Function Sub test2() Dim WrapNarrative As Range Dim WrapEnd As Range With Sheets("CA Sweeps") Set WrapEnd = .Range("WrapNarrEnd").Offset(-1, 0) Set WrapNarrative = .Range("A2", "wrapnarrend") .Range("I24").Value = ConcatMe(WrapNarrative, " ") End With End Sub