我有下表
我正在尝试将数据粘贴到D7单元格中,以便当前框的边缘。
我尝试使用
ActiveSheet.Range("C1").End(xlDown).End(xlToRight).Offset(1, 1).Select
答案 0 :(得分:3)
这是一个Excel表格,因此您可以使用表格“范围”的尺寸进行偏移,并调整为一个单元格的大小。
Option Explicit
Public Sub AddressOfCell()
With ThisWorkbook.Worksheets("Sheet1").ListObjects("table1").Range
Debug.Print .Offset(.Rows.Count, .Columns.Count).Resize(1, 1).Address
End With
End Sub
贷给@Chronocidal更好一些:
Debug.Print .Cells(.Rows.Count + 1, .Columns.Count + 1).Address
答案 1 :(得分:2)
已更新: 无论范围是否是表对象,此方法都将起作用。
Sub FindLastCell()
Dim rng As Range
Set rng = ActiveSheet.Range("C1").CurrentRegion
Debug.Print rng.Offset(rng.Rows.Count, rng.Columns.Count).Resize(1, 1).Address
End Sub
答案 2 :(得分:1)
尝试以下代码行:
ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Offset(1, 1).Select
答案 3 :(得分:1)
只需在您的代码中使用它:
With ActiveSheet.Cells
ActiveSheet.Cells(.Find(What:="*", SearchDirection:=xlPrevious, _
SearchOrder:=xlByRows).Row + 1, _
.Find(What:="*", SearchDirection:=xlPrevious, _
SearchOrder:=xlByColumns).Column + 1).Select
End With
说明:
Sub AfterUsedRange()
Dim LastRow As Long
Dim LastCol As Integer
With ActiveSheet.Cells
'Find the LAST real row
LastRow = .Find(What:="*", SearchDirection:=xlPrevious, _
SearchOrder:=xlByRows).Row
' Find the LAST real column
LastCol = .Find(What:="*", SearchDirection:=xlPrevious, _
SearchOrder:=xlByColumns).Column
End With
ActiveSheet.Cells(LastRow + 1, LastCol + 1).Select
End Sub
要在宏中使用它:
Sub AfterUsedRange()
Cells(.Find(What:="*", SearchDirection:=xlPrevious, _
SearchOrder:=xlByRows).Row + 1, _
.Find(What:="*", SearchDirection:=xlPrevious, _
SearchOrder:=xlByColumns).Column + 1).Select
End Sub
或者您可以重新装修:
Sub AfterUsedRange()
Cells(.Find(What:="*", SearchDirection:=xlPrevious, _
SearchOrder:=xlByRows).Row, _
.Find(What:="*", SearchDirection:=xlPrevious, _
SearchOrder:=xlByColumns).Column).Offset(1, 1).Select
End Sub
要证明有关“ UsedRange”和“ SpecialCells”功能至少不可靠的传言实际上是事实
参考代码行:
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 1).Select
与我重新装修的代码行(答案的第一行)相反
ActiveSheet.Cells(.Find(What:="*", SearchDirection:=xlPrevious, _
SearchOrder:=xlByRows).Row, _
.Find(What:="*", SearchDirection:=xlPrevious, _
SearchOrder:=xlByColumns).Column).Offset(1, 1).Select
让我们致电第一行: SpecialCellsCode 。
让我们呼叫第二行: MyCode 。
下表显示了一个简单的自我解释方案。
A B C D
1 1 1 1
2 2 2
3 3 y
4 x
让我们将第一行和第一列的“交集”称为“ UsedRange”之后的 : AfterUsedRangeAddress 。
现在,在打开工作表时。 MyCode 正确计算出 AfterUsedRangeAddress 为D4
并将其选中(x), SpecialCellsCode 也是如此>。当我们删除列'C
'中的值3时, MyCode 正确会计算出 AfterUsedRangeAddress 为D3
,选择它(y),但 SpecialCellsCode 错误地仍然计算D4
并选择一个(x)。
最后,SpecialCellsCode是至少可靠的,即使不是不可用的。
想到{@ 3}}这个想法甚至是考虑进行这种测试的想法。