返回列表 上一主題 發帖

資料區域右下欄位獲取

本帖最後由 GBKEE 於 2010-6-11 13:07 編輯

回復 1# 巴克斯

SpecialCells(xlLastCell)永遠是工作表中已使用的儲存格之最後一個的儲存格
  1. Sub Ex() 'ActiveCell只要位於一連續範圍中
  2.     Dim Rng As Range
  3.     Set Rng = ActiveCell.CurrentRegion
  4.     Rng(Rng.Rows.Count, Rng.Columns.Count).Select
  5. End Sub
複製代碼

TOP

回復 4# 巴克斯
  1. Sub Ex()
  2.     Dim E As Range, R&, C&
  3.     For Each E In Cells.SpecialCells(xlCellTypeConstants).Areas
  4.         If E(E.Rows.Count, E.Columns.Count).Row > R Then R = E(E.Rows.Count, E.Columns.Count).Row
  5.         If E(E.Rows.Count, E.Columns.Count).Column > C Then C = E(E.Rows.Count, E.Columns.Count).Column
  6.     Next
  7.     Cells(R, C).Select
  8. End Sub
複製代碼

TOP

回復 10# 巴克斯
試試如 Hsieh 板主 所說的由後往前推
  1. Sub Ex()
  2. Dim Rng As Range, i&, R&, C&
  3. Set Rng = ActiveSheet.UsedRange
  4. For i = Rng.Columns.Count To 1 Step -1
  5.     If Application.CountA(Rng.Columns(i)) <> 0 Then
  6.         C = Rng.Columns(i).Column
  7.         Exit For
  8.     End If
  9. Next
  10. For i = Rng.Rows.Count To 1 Step -1
  11.     If Application.CountA(Rng.Rows(i)) <> 0 Then
  12.         R = Rng.Rows(i).Row
  13.         Exit For
  14.     End If
  15. Next
  16. If R <> 0 And C <> 0 Then Cells(R, C).Select
  17. End Sub
複製代碼

TOP

工作表沒有修改任一儲存格的格式 前提下可使用
Sub Ex()
    With ActiveSheet.UsedRange
        .Cells(.Rows.Count, .Columns.Count).Select
    End With
End Sub

TOP

本帖最後由 GBKEE 於 2010-6-13 08:03 編輯

回復 15# 巴克斯
Areas 屬性 傳回集合,此集合代表多重範圍中的所有範圍
在 Set a = Cells.SpecialCells(xlCellTypeConstants).Areas
a=集合多重範圍中的所有範圍
a.Count=計算a所有範圍中多重範圍的數量
a(a的第幾個範圍)-->a(a.Count)=a(a中最後一個範圍)
a(a中最後一個範圍).Count=計算a(a中最後一個範圍)範圍中Cells數量
a(a中最後一個範圍)(a(a中最後一個範圍).Count)->a(a中最後一個範圍)(最後一個Cell)
所以 r = a(a.Count)(a(a.Count).Count).Row 是你要的
且若row可以直接求出,那column是否可比照找到    找不到的

a(a.Count) 不一定是工作表最右邊的 範圍
a(a.Count) 一定是工作表最下面的範圍
另測版主k = UsedRange.SpecialCells(xlCellTypeLastCell).Column用法時

UsedRange 如沒有指明是那一工作表的已用範圍 程序必須是置於作用中Sheet 的物件模組中  例: 作用中的工作表是 Sheet1 程序碼須置於 Sheet1的物件模組中 可行
你可能將 程序 置於一般模組中(Module) 或 ThisWorkbook物件模組中
你必須指明是那一工作表ActiveSheet.UsedRange 或Sheet1.UsedRange

TOP

回復 15# 巴克斯


   
若row可以直接求出,那column是否可比照找到
  1. Sub Ex()
  2.     Dim Rng As Object, E, R, C
  3.     Set Rng = ActiveSheet.Cells.SpecialCells(xlCellTypeConstants).Areas
  4.     R = Rng(Rng.Count)(Rng(Rng.Count).Count).Row
  5.     For Each E In Rng
  6.         If E(E.Count).Column > C Then C = E(E.Count).Column
  7.     Next
  8.     MsgBox Cells(R, C).Address
  9. End Sub
複製代碼

TOP

        靜思自在 : 吃苦了苦、苦盡廿來,享福了福、福盡悲來。
返回列表 上一主題