从Range VBA查找最后一个单元格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Range VBA查找最后一个单元格相关的知识,希望对你有一定的参考价值。
如何从定义的范围中找到最后一个单元格的位置?单元格不必包含任何数据,但必须是最正确的,并且大多数位于特定范围内的单元格中。
Set rngOrigin = wksOrigin.Cells(IntFirstRow, IntFirstColumn).CurrentRegion
我希望收到
Cells(i,j)
答案
也许你是在这之后:
'absolute indexes from cell A1
With rngOrigin
i = .Rows(.Rows.count).row
j = .Columns(.Columns.count).Column
End With
'relative indexes from rngOrigin upleftmost cell
With rngOrigin
i = .Rows(.Rows.count).row - .Rows(1).row + 1
j = .Columns(.Columns.count).Column - .Columns(1).Column + 1
End With
另一答案
尝试以下方法
rngOrigin.End(xlDown).End(xlRight)
或者您可以使用CurrentRegion
并计算行和列并使用Offset
另一答案
在您的情况下,由于您希望在wksOrigin
(定义为工作表)中找到最右侧和最下方的单元格,您可以使用SpecialCells(xlCellTypeLastCell)
获取最后一个单元格Row和Column。
i = wksOrigin.Cells.SpecialCells(xlCellTypeLastCell).Row ' <-- get last row number
j = wksOrigin.Cells.SpecialCells(xlCellTypeLastCell).Column ' <-- get last column number
如果要调试结果,可以添加:
MsgBox "Last row at " & i & ", last column at " & j
另一答案
我在下面的代码中处理了它,但你的评论很有帮助。谢谢。
intLastRow = rngOrigin.Cells(1, 1).Row + rngOrigin.Rows.Count - 1
intLastCol = rngOrigin.Cells(1, 1).Column + rngOrigin.Columns.Count - 1
另一答案
其他人给出的答案大多有效,但如果该地区是非连续细胞的联合则不行。这是一个适用于单区域和多区域,连续和非连续的版本。
Function LastCellOfRange(rng As Excel.Range) As Excel.Range
Dim area As Excel.Range
Dim rowNum As Long
Dim maxRow As Long
Dim colNum As Long
Dim maxCol As Long
Dim areaIdx As Integer
Set LastCellOfRange = Nothing
maxRow = 0
maxCol = 0
For areaIdx = 1 To rng.Areas.Count
Set area = rng.Areas(areaIdx)
rowNum = area.Cells(area.Cells.Count).row
If (rowNum > maxRow) Then
maxRow = rowNum
End If
colNum = area.Cells(area.Cells.Count).Column
If (colNum > maxCol) Then
maxCol = colNum
End If
Next areaIdx
Set LastCellOfRange = rng.Worksheet.Cells(maxRow, maxCol)
Set area = Nothing
End Function
另一答案
也许这就是你想要的:
Dim rngLastCell As Range
Set rngLastCell = rngOrigin(rngOrigin.Count)
另一答案
如果您想要定义范围的绝对最后一个单元格,无论它是否有任何内容,这里都是一个简单的解决方案
Dim InputRng As Range 'define a range for the test'
Set InputRng = Range("$F$3:$F$15")
MsgBox InputRng(1).Address & ":" & InputRng(InputRng.Cells.Count).Address 'This would output the absolute address of defined range'
以上是关于从Range VBA查找最后一个单元格的主要内容,如果未能解决你的问题,请参考以下文章
在EXCEL中 如何用VBA查找某特定单元格并返回该单元格的行和列值?