No.1由於版本不同,Excel可處理的最大行和列都有一定的限制要求,如何來獲取這些值來對編輯的程式進行容錯處理,就顯得十分重要。本節主要介紹兩個屬性,可返回工作表的行和列。上
2021-06-12 11:50:12
No.1
由於版本不同,Excel可處理的最大行和列都有一定的限制要求,如何來獲取這些值來對編輯的程式進行容錯處理,就顯得十分重要。
本節主要介紹兩個屬性,可返回工作表的行和列。
上圖是兩個屬性:Application.Columns 和 Application.Rows
如果熟悉VBA,對此也不會陌生,Application.Columns 返回一 個 Range 物件,該物件代表活動工作表上的所有列;Application.Rows返回一 個 Range 物件,該物件代表活動工作表上的所有行。
語法:
Application.Columns
Application.Rows
在不使用物件識別符的情況下使用此屬性等效於使用 ActiveSheet.Rows,也就是當前工作表的行數。
上圖是示例,返回當前工作表行數,然後定義一個數組,儲存到陣列中。
注意:這個陣列大小是有一定要求的,並不是說把所有行都會儲存在陣列中,由於記憶體硬體的限制會出現記憶體會溢位錯誤。
如何對這個錯誤進行規避呢?可以使用一些錯誤提示機制來進行。
本例中用到另一個物件Err,可以在出現記憶體溢位的時候提前結束定義陣列,也就實現了溢位前停止陣列定義,那麼多出的資料就不能進行陣列處理了。
其實,從這一方來講,VBA並不能完美地解決任何問題,特別是當資料量達到一個量級的時候就無法進行了。
這就和計算機的硬體有關了,並不是軟體存在問題,如果硬體達到無限可能,軟體實際上是沒有邊際的。
這也就是說Excel是一個相對輕量組的資料管理軟體,對於更大資料處理就無能為力了。
那樣的情況下可以轉移到資料庫當中進行處理,是真的好。
No.2
程式碼
Private Sub CommandButton1_Click()Dim rArr, ri As Long, R As Range, R1 As Range, R2 As Range, R3 As Range, Rs As RangeSet Rs = Application.Rows'返回行單元格Set R1 = ActiveSheet.Range("A1")Set R2 = ActiveSheet.Range("A2")Set R3 = ActiveSheet.Range("A3")ReDim rArr(0)For Each R In RsOn Error GoTo Ne100'如果出現錯誤 程式跳轉到Ne100:ReDim Preserve rArr(ri)'重定義陣列rArr(ri) = R.Value'陣列賦值R1.Value = riri = ri + 1Next RNe100:R2.Value = "當前陣列有: " & UBound(rArr) & "個元素"R3.Value = "當前工作表有: " & Rs.Count & "個單元格行"MsgBox Err.Description & VBA.vbCrLf & Err.Number'輸出錯誤提示Err.ClearErase rArr'釋放陣列Set Rs = NothingSet R = NothingThisWorkbook.SaveEnd Sub
如果沒有研究,不建議偵錯上述程式碼,特別是在重要檔案當中,雖然做了一些避免記憶體溢位處理方法,但是在多次偵錯過程當中,同樣會出現記憶體溢位,導致Excel應用重啟。
歡迎關注、收藏
---END---
相關文章
No.1由於版本不同,Excel可處理的最大行和列都有一定的限制要求,如何來獲取這些值來對編輯的程式進行容錯處理,就顯得十分重要。本節主要介紹兩個屬性,可返回工作表的行和列。上
2021-06-12 11:50:12
一直以來,政務資料開放就全國範圍而言,一直是雷聲大、雨點小,與資料安全問題直接相關。 此外,受制於資料安全問責壓力,諸多政府及其部門對資料開放缺乏動力。雖然諸多城市已經邁
2021-06-12 11:49:36
在WWDC21中,蘋果推出了備受期待的iOS 15。最新的報道則顯示,在全新的iOS 15中,蘋果引入了一個小但有用的新功能。 基於這項功能,使用者可以直接在應用程式中要求退款,而不必特意
2021-06-12 11:49:24
[PConline 資訊]近日,有使用者反饋Win10存在藍屏宕機的問題,現在解決方法來了。英特爾釋出了2021年6月的WiFi驅動更新,解決了Win10藍屏宕機的問題。 據報道,這個藍屏宕機
2021-06-12 11:48:39
榮耀已經官宣,將於6月16日正式釋出榮耀50系列。榮耀官方也已經公佈了榮耀50系列的外觀和部分配置,比如首發驍龍778G,最高搭載100W快充等。而根據外媒的爆料,有人已經拿到了榮耀5
2021-06-12 11:48:30
手機市場來到下半年之後,各大手機廠商的發展速度都變慢了許多,有的是在憋大招,有的則是在研發新技術,可以說什麼樣的情況都有。而今天要和大家說的手機品牌是realme,要知道realme
2021-06-12 11:48:13