1. 程式人生 > >【VBA研究】用VBA取得EXCEL任意列有效行數

【VBA研究】用VBA取得EXCEL任意列有效行數

作者:iamlaosong

用VBA對Excel檔案進行處理的時候,關鍵欄位的列號程式設計時往往是不知道的,需要通過引數設定才能知道,因此,我們程式設計的時候,就不能用這樣的語句取有效行數:

    lineno = [B65536].End(xlUp).Row          '從下至上找有效行數

上述語句中的列名“B”如果是變數,可以用字串連線的方式實現,即:

    pos_ems = "C"
    lineno = Range(pos_ems & "65536").End(xlUp).Row

如果給的是列號,則用下列語句:

   pos_ems = 3
   lineno = Cells(65536, pos_ems).End(xlUp).Row

如果該列所有需要處理的單元格都有值,也可以用下列語句:

    lineno = [B1].End(xlDown).Row          '從找有效行數

或者     ineno = Cells(pos_fst, pos_ems).End(xlDown).Row
語句中的pos_fst是有效資料的起始行,這個語句的好處是不用管工作表最大行數是65536還是1048576,缺點是如果有效資料只有一行或者該列有空值的話,將取不到有效行數,這也是這種方法不常用的主要原因。

上述語句中的變數pos_ems可以讀取單元格的值,以便面對不同檔案時隨時設定:

    pos_fst = Cells(2, 7)
    pos_ems = Cells(3, 7)
    pos_sav = Cells(4, 7)
    
    lineno = [B65536].End(xlUp).Row           '行數,檔案數量
    
    For unit_num = 5 To lineno                 '檔案迴圈
    
        datfile = Cells(unit_num, 2)                              '檔名稱
        datFullName = ThisWorkbook.Path & "\" & datfile
        If Dir(datFullName, vbNormal) <> vbNullString Then
            Workbooks.Open Filename:=datFullName        '開啟訂單檔案
            If Application.Version >= "12.0" And ActiveWorkbook.FileFormat = 51 Then
                maxrow = Cells(1048576, pos_ems).End(xlUp).Row
            Else
                maxrow = Cells(65536, pos_ems).End(xlUp).Row
            End If
        Else
            MsgBox "資料檔案不存在!", vbOKOnly, "iamlaosong"
            Exit Sub
        End If
。。。

Excel的版本不同,最大行數和列數不同。2003版最大行數是65536行,最大列數是256列(最後一列IV)。Excel2007及以後的版本最大行數是1048576行,最大列數是16384列(最後一列XFD)
開啟一個空白新建EXCEL表格,按CTRL+下箭頭,可以檢視到最大行數;按CTRL+右箭頭,可以檢視到最大列標(若想顯示列數,可在最右一列的某單元格中輸入=column()回車,出現數字就是最大列數)。

相關推薦

VBA研究VBA取得EXCEL任意有效

作者:iamlaosong 用VBA對Excel檔案進行處理的時候,關鍵欄位的列號程式設計時往往是不知道的,需要通過引數設定才能知道,因此,我們程式設計的時候,就不能用這樣的語句取有效行數:    

VBA研究儲存和開啟Excel檔案的程式碼

iamlaosong文 經常用到儲存處理之後的Excel檔案,儲存的格式有xls和xlsx兩種,這裡記錄一下儲存程式碼,因為經常用到。不同版本下指定儲存檔案格式的常數略有不同,下面是2010版將已開啟的檔案儲存為xlsx格式的程式碼:        

VBA取得EXCEL表格中的

VBA取得EXCEL表格中的行數和列數       初學EXCEL巨集的童鞋,總是很想知道表格中含有資料的行數和列數,尤其是行數和列數不確定的情況下。這樣可以避免很多的錯誤,並且可以提高效率。但每次用到的時候到網上查詢時,總是給了很多無用的答案,往往找不到想要的

VBA研究Excel在64位系統安裝目錄造成的ORA-06413:連線未開啟錯誤

我做的excel工具,連線oracle資料庫查詢資料,平時可以很好的執行,無論是XP和win7都可以。後來碰到一臺win7(64位)的系統,發現無法連線資料庫,報“ORA-06413: 連線未開啟”錯誤。 錯誤描述: 用ORACLE的工具裡的sqlplus可以連線,可是

VBA研究工作表自己主動篩選模式檢測

模式 處理 name ins work sdn edr rda all 作者:iamlaosong 用VBA程序處理Excel數據文件。用戶的數據文件有時處於自己主動篩選模式,往往導致數據處理不對。為此,須要檢測工作表是否處於該模式,假設是,則去掉自己主動篩選。語

VBA研究奇怪的“?”----Unicode格式的字元處理

iamlaosong文 1、從網站匯出的Excel檔案單元格內容後面多了一個不可見字元,怎麼造成的不知道,但不是每一列都有。想要用VBA程式碼去掉,就要先判斷出是什麼字元,將內容複製到文字環境中(比如程式設計環境或者UltraEdit中),發現最後面那個是個“?”,Asc()函式取其碼值也是

VBA研究讀取Unix下的文字檔案到工作表

iamlaosong文 通常在VBA中讀檔案檔案時,習慣使用Line Input #fileNo, str的方法,這個方法對Windows下的文字檔案是可以的,例如下面的程式碼就是讀取文字檔案中的資料到Excel表中: Sub ImpData1() Dim datFullName

VBA研究呼叫API實現漢字簡繁互換

iamlaosong文 Excel的VBA功能非常強大,但再強大的東西也需要藉助別的東西,API呼叫就可以完成很多VBA本身沒有的功能,一些已有的功能也是VBA呼叫API實現的。下面的漢字簡繁轉換程式碼,就是呼叫API完成的。 關於API呼叫,網上有很多資料。學習程式設計首先是模仿,我在

VBA研究如何用VBA讀取檔案的日期時間

iamlaosong文 檔案的日期時間分建立時間和修改時間,檔案一旦建立,建立時間就定下不變了,所以日常應用中一般都是取修改時間,我的一個應用(生成二維碼)中就是取這個時間判斷圖片檔案是否重新生成。 1、取檔案的修改時間VBA有專門的函式FileDateTime,如下面的語句:

VBA研究VBA中如何用求和函式SUM求和

SUM是Excel的函式,在VBA中呼叫需要加上Application.WorksheetFunction.Sum(),但是,Excel寫法卻不能用。 比如,excel單元格中可以寫成=sum(d2:d100),VBA中是不能這麼寫的,即使加上引號寫成Applicati

VBA研究解析JSON資料的幾種方法

iamlaosong文 網抓資料或者通過介面接收資料時,發來的資料很多是JSON格式,這是JavaScript常用的一種資料結構。對這種資料如何解析呢?先假定發來的資料如下,並針對這個資料給出幾種解析

VBA研究Application.Calculation狀態影響VBA執行速度

作者:iamlaosong 發現一個現象,當Application.Calculation為自動計算狀態時,如果工作表中存有公式,2003版似乎並不降低VBA的執行速度,但2007版則影響很大,速度降

NVivo教程Nvivo為研究團隊設立主專案

Nvivo Windows 中的協作板塊主要提供將單個個人專案合併為“master project”的想法並實施。NVivo可以豐富您對研究的理解,幫助你得到強大可靠的研究結果。   團隊領導建立主專案並將副本分發給團隊成員,然後團隊成員可以在他們各自的專案副本中編碼、註釋和

Pythonpython對excel進行讀寫

Description 0014 :純文字檔案 student.txt為學生資訊, 裡面的內容(包括花括號)如下所示: { "1":["張三",150,120,100], "2":["李四",90,99,95], "3":[

VBA得到EXCEL表格中的

方法3:   ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row   ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column   缺點:在工作表進行對刪除或清除操作時也會變得比實際情況大。方法

第一組例文檔,功能說明書,技術說明書

正在 分鐘 委托 reading 簡單 觸發 作業 聲音 暫時 場景:用戶使用自習助手 1.背景: (1)典型用戶:正在上自習的東北大學學生 (2)用戶的需求/迫切解決的問題:用戶在上自習時如何專心學習 (3)假設:用戶正確安裝本軟件 2.場景:關於這個場景的文字描述

第二組例文檔+功能說明書+技術說明書

str password 點擊事件 註冊界面 ext 漸變 pass tdi 能說 標題一:用戶註冊後進入遊戲主頁面 角色:首次使用Hunter的用戶 主要成功場景: 用戶點擊註冊; 用戶在用戶名文本框中輸入用戶名 用戶在密碼文本框中輸入密碼 用戶在確認密碼文本框中再一次

C/C++:C實現輸出日期的陰歷日子

print http this while lunar void 大小 oid pan 前言 輸出陰歷一直是個老大難的問題。由於陰歷日子沒有規律。所以這裏須要做的就是通過打表的算法做到輸出陰歷日子,可是非常多人都不太了解原理,我這裏就給大家送上了一個福

Web前端CSS3實現彈幕

font ram hover 字符 才會 命令 .sh left window 初版 用css3來實現彈幕確實比較簡單,只需要設置動畫讓彈幕從屏幕右側移動到屏幕左側即可,一開始是這樣實現的 .danmu { position: fixed; left: 100%

Chapter 3戶體驗分析

image blog 評論 gin 自己 img 結束 基於 margin   在我們日常生活中,微信公眾號的普遍性已經是達到90%以上,如何做好一個微信公眾號對於一個組織來說是非常重要的。因為公眾號起到的作用是【宣傳信息】,如何讓一些商家想讓用戶了解的信息及時傳達或者讓用