Excel 在VBA中调整范围大小

Excel 在VBA中调整范围大小,excel,vba,Excel,Vba,我试图通过向下查看列中的行来调整范围的大小,以查找下一个使用的值,但是我得到了一个对象定义的错误。有什么想法吗 Set vrng = ActiveSheet.Range("details_table").Find(sest, , xlValues, xlWhole) Set vrng = vrng.Resize(vrng.End(xlDown).Row) 清除第二行末尾的.row,如果不起作用,请重试 Set vrng = Range(vrng,vrng.end(xldown)) 您只需要确

我试图通过向下查看列中的行来调整范围的大小,以查找下一个使用的值,但是我得到了一个对象定义的错误。有什么想法吗

Set vrng = ActiveSheet.Range("details_table").Find(sest, , xlValues, xlWhole)
Set vrng = vrng.Resize(vrng.End(xlDown).Row)

清除第二行末尾的.row,如果不起作用,请重试

Set vrng = Range(vrng,vrng.end(xldown))
您只需要确保在.Endxldown之前使用vrng.rows

但是,我建议将第一个变量的名称更改为sestCell,然后使用Set vrng=sestCell.Resizesestcell.Rows.Endxldown.Row以避免混淆


它所做的是,您的查找将返回一个单元格范围,特别是一个单元格地址。然后,由于要向下扩展该范围,因此需要指定要扩展范围中的行:。Resizevrng.rows.Endxldown.Row。

如果vrng之后没有更多数据,则.Endxldown.Row将返回工作表中的行数。假设vrng为A100:

如果您不熟悉立即If,则常规If块将起作用:

If Not vrng.End(xlDown).Row = Rows.Count Then
    Set vrng = vrng.Resize(vrng.End(xlDown).Row - vrng.Cells(1).Row, )
End If

您希望如何调整此大小?假设你在A10中找到了sest。你想把它和下一个非空单元格的范围相加吗?我在宏中尝试了你的代码,但由于某种原因,在循环所有单元格的过程中仍然会出现错误。它说了什么?点击Debug时突出显示哪一行?它在我的计算机上运行正常。我编辑了代码-你需要显式地告诉Find来查找和查找。
Set vrng = Range("A100")
'// There is no data below vrng, so:
nextRow = vrng.End(xlDown).Row '// Returns 65,536 (pretend it's XL97)

vrng.Resize(nextRow) '// <~~ This will error
Set vrng = vrng.Resize(IIf(vrng.End(xlDown).Row = Rows.Count, vrng.Rows.Count, vrng.End(xlDown).Row - vrow.Cells(1).Row)
If Not vrng.End(xlDown).Row = Rows.Count Then
    Set vrng = vrng.Resize(vrng.End(xlDown).Row - vrng.Cells(1).Row, )
End If