使用startCell.End设置范围(xlDown)

时间:2016-09-16 14:11:55

标签: excel-vba vba excel

我想在Excel宏中更改数据验证列表范围。最初手动选择整个C列,现在我想在VBA中动态更改它。

我的代码:

Dim startCell As Range, firstNonEmptyCell As Range
Dim range1 As Range, rng As Range

Set startCell = Worksheets("Sel").Range("C2")
Set ws = ThisWorkbook.Worksheets("Sel")

Set range1 = ws.Range("$C$2:startCell.End(xlDown).Address")

上面的行触发了运行时1004错误应用程序或对象定义错误

如果我将startCell.End(xlDown).Address硬编码为$ C $ 18,它实际上是startCell.End(xlDown)的返回值。如果我检查调试器,则代码的其余部分正常工作。< / p>

所以在这种情况下我不太确定这个错误的原因。

1 个答案:

答案 0 :(得分:0)

取代:

Set range1 = ws.Range("$C$2:startCell.End(xlDown).Address")

使用:

Set range1 = ws.Range("$C$2:" & startCell.End(xlDown).Address)

可能还有其他问题。