Board logo

標題: [發問] 快速找出範圍內最大列數 [打印本頁]

作者: ciboybj    時間: 2014-8-13 15:13     標題: 快速找出範圍內最大列數

各位好
我利用下列的代碼
  1. Dim N11, N2, N3, N4, N5, MaxRow As Integer
  2.             N11 = Cells(Rows.Count, 2).End(xlUp).Row 'B欄的最後一資料格的列數
  3.             N2 = Cells(Rows.Count, 3).End(xlUp).Row 'C欄的最後一資料格的列數
  4.             N3 = Cells(Rows.Count, 4).End(xlUp).Row
  5.             N4 =Cells(Rows.Count, 5).End(xlUp).Row
  6.             N5 = Cells(Rows.Count, 6).End(xlUp).Row
  7.             
  8.             MaxRow1 = Application.WorksheetFunction.Max(N1, N2, N3, N4, N5) '求出最上述範圍中最大數
複製代碼
找出B至F欄的範圍中的最大列數
想請問各位有沒有其他更快的方式,或是更好的方式,可以達到於特定範圍內找出最大列數
謝謝
作者: luhpro    時間: 2014-8-13 23:39

回復 1# ciboybj

假設所有資料都是與B欄中有資料的最後一列相連在一起的:

MaxRow1 = Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2).CurrentRegion.Rows.Count
作者: kimbal    時間: 2014-8-14 00:27

如果是整頁,我習慣用 Usedrange
MaxRow1 = ActiveSheet.UsedRange.SpecialCells(11).Row
作者: stillfish00    時間: 2014-8-14 16:19

回復 1# ciboybj
  1. Function GetLastRow(rng As Range) As Long
  2.   Dim rngFind As Range
  3.   
  4.   Set rngFind = rng.Find(what:="*", Searchorder:=xlByRows, SearchDirection:=xlPrevious)
  5.   If Not rngFind Is Nothing Then
  6.     GetLastRow = rngFind.Row
  7.   Else
  8.     Err.Raise vbObjectError + 1025, "GetLastRow()", "範圍內找不到任何資料"
  9.   End If
  10. End Function
複製代碼
  1. Sub Test()
  2.   MsgBox GetLastRow(ActiveSheet.[B:G])
  3. End Sub
複製代碼

作者: GBKEE    時間: 2014-8-14 20:12

回復 1# ciboybj
用搜尋快一些
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Rng As Range
  4.     With Range("B2:E15")
  5.         Set Rng = .Find(What:="*", After:=.Cells(1), SearchDirection:=xlPrevious)
  6.         'SearchDirection:=xlPrevious 搜尋方向:往後
  7.     End With
  8.     If Not Rng Is Nothing Then MsgBox Rng.Row
  9. End Sub
複製代碼

作者: ciboybj    時間: 2014-8-15 23:22

謝謝各位的分享!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)