写入命名范围中的最后一个单元格

时间:2015-01-13 02:51:59

标签: excel vba excel-vba

我一直在线查看/这里,我能找到的所有内容仅与完整的工作表有关,而不是与该工作表的一部分有关。

我有一个代码,它将采用命名范围" ARange",并搜索任何出现的" AValue" 如果" AValue"不在范围内,那么它将扩大范围以允许空间插入" AValue"

我遇到的问题是,在我扩展范围之后,我不确定如何插入" AValue"进入范围的最后一个单元格。这可以通过ARange中的另一个For Each Cell来完成,我将把它作为最后的手段。

请注意。 ARange只是一个示例名称。我希望能够在几个不同的范围内做到这一点。全1列宽。一些将从第1行开始,第2行,第20行等等。

有没有简单的方法来表达以下内容以便它起作用?

LastCell("ARange").Value = TextBox1.Value

谢谢你们!

2 个答案:

答案 0 :(得分:2)

如果您的命名范围已使用引用:定义,使用类似的公式,

=OFFSET(Sheet1!$A$1, 0, 0, COUNTA(Sheet1!$A:$A, 1)

......或非易失性等价物,

=Sheet1!$A$1:INDEX(Sheet1!$A:$A, MATCH("zzz", Sheet1!$A:$A))       ◄ for text
=Sheet1!$A$1:INDEX(Sheet1!$A:$A, MATCH(1e99, Sheet1!$A:$A))        ◄ for numbers

...然后你只需要在范围之下的第一个空白单元格中设置值,一旦设置了值,范围为*参考:将调整为包含它。

With Range("my_Named_Range")
    .Cells(.Cells.Count).Offset(1) = "abc"
End With

一旦设置了值, my_Named_Range 就会扩展为包含它。

编辑:

my_Named_Range_2 定义为参考:(公式►定义的名称►名称管理员),

=Sheet1!$A$1:INDEX(Sheet1!$1:$1, , MATCH("zzz", Sheet1!$1:$1))

...上面提供的代码段应该修改为,

With Range("my_Named_Range_2")
    .Cells(.Cells.Count).Offset(0, 1) = "abc"
End With

答案 1 :(得分:1)

鉴于 ARange 只有一个列宽:

Sub xTendIt()
    Dim ARange As Range, AValue As String
    '
    'this is an example
    '

    AValue = "X"
    Set ARange = Range("B9:B23")
    '
    'this is a general extender
    '
    Set ARange = ARange.Resize(ARange.Rows.Count + 1, 1)
    ARange(ARange.Count) = AValue
End Sub

或使用 TextBox1.Value