我想创建一个程序,当用户继续添加新数据时,我的范围会发生变化。
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不允许这样的事情。所以如果有可能请指导我。
答案 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。定义使用的范围然后使用偏移我发现是最好的方法。