我可以让我的范围变量吗?

时间:2017-01-13 18:32:29

标签: excel vba excel-vba

我想创建一个程序,当用户继续添加新数据时,我的范围会发生变化。

 dim rng as range  
dim erow as integer
erow = wc.Cells(wc.Rows.Count, 3).End(xlUp).Row + 1
set rng =activesheet.Range("c4:c24002")' you will find this thing useless. but this i only part of my program 

我可以使用最后一个单元格引用来定义我的范围。但这会增加不必要的过程。所以我尝试了#34; Range(" C4:Cerow")"。不幸的是,vba不允许这样的事情。所以如果有可能请指导我。

2 个答案:

答案 0 :(得分:3)

"C4:Cerow"是一个字符串文字,VBA无法猜出你的意思;你需要连接 "C4:C"部分,并使用 erow变量的值的字符串表示。

如下面的代码所示:

Dim erow As Long
erow = wc.Cells(wc.Rows.Count, 3).End(xlUp).Row + 1

Dim rng As Range  
Set rng = ActiveSheet.Range("C4:C" & erow)

答案 1 :(得分:-2)

在活动工作表中,您可以使用ActiveSheet.UsedRange方法。这将扩展您的范围,以包括包含信息的最远列和行。

作为一个例子


Dim rng as Range
Set rng = ActiveSheet.UsedRange

从评论转移以减少垃圾邮件。

使用UsedRange允许您做的是使用rng.Address引用该范围以将范围限制插入到您的代码中。

例如:

ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
将为您提供最后一行,
ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column
将为您提供最后一栏。

这完全取决于OP需要代码的内容。如果他们计划在列" C"但是在其他列中有数据,那么你不能简单地做xlUp。定义使用的范围然后使用偏移我发现是最好的方法。