VBA進階 | 數組基礎06: 與數組相關的函數——Array函數與IsArray函數

2021-03-02 完美Excel

微信公眾號:excelperfect

本文系因違規而刪除的2017年10月24日推送文章經修改後重新推送,已看過的朋友可直接飄過,免得浪費時間。

 

在某些情形下,可以使用Array函數方便地填充數組。例如,下面的代碼:

 

Dim myArray

myArray =Array("國慶節", "中秋節", "元旦", "春節")

 

等價於:

 

Dim myArray(3)

myArray(0) = "國慶節"

myArray(1) = "中秋節"

myArray(2) = "元旦"

myArray(3) = "春節"

 

因此,Array函數可以將一組值批量賦給一個數組。

 

Array函數語法

Array函數返回一個Variant型數組,該數組由傳遞給該函數的參數組成。其語法為:

Array([元素1],[元素2],…,[元素n])

其中:

元素1~n可以是任意數據類型,代表賦給數組元素的數據。

由Array函數返回的數組只可賦值給一個Variant型變量,不能賦值給已聲明為數組變量的變量。

Array函數返回的數組中元素的順序與傳遞給函數的參數值的順序相同。

Array函數總是返回Variant類型的數組,但元素的數據類型可以不同,這取決於傳遞給該函數的數值類型。例如Array("One", 2, 3.14)返回的數組中,第1個元素是String型,第2個是Integer型,第3個是Double型。

Array函數創建的數組下限由Option Base確定。若忽略該語句,則數組下限值為0。

若Array函數沒有任何參數,則會創建一個空數組。

Array函數返回的數組是動態數組,其初始大小是Array函數的參數數量,可以使用ReDim、ReDim Preserve來對所創建的數組重新定義維數。

如果使用VBA.Array(),例如

Dim myArray As Variant

myArray = VBA.Array(「國慶節」,」中秋節」,」元旦」)

那麼數組的基數總是0,與Option Base的設置無關。即Option Base 1時,myArray(1)的值仍然是「中秋節」。

 

編程技巧

1. 在已確定元素內容時,使用Array函數更有效率。例如:

Dim myArray AsVariant

myArray =Array("國慶節", "中秋節", "元旦", "春節")

 

2. 可以使用Array函數創建多維數組,例如:

Dim myArray AsVariant

   

myArray =Array(Array("One", "Two", "Three"), _

                  Array("Four","Five", "Six"), _

                  Array("Seven","Eight", "Nine"))

創建了一個3行3列的二維數組。

然而,要訪問這個數組中的元素,例如第2行第3列的元素數據「Six」,不能夠使用:

myArray(1, 2)

這樣,將產生「下標越界」錯誤。

而應該使用:

myArray(1)(2)

或者,先聲明一個Variant型變量,然後將相應行的第1維賦值給該變量,再使用該變量來訪問相應列的元素數據,例如:

Dim vElement AsVariant

vElement =myArray(1)

   

MsgBox vElement(2)

 

3. 可以使用Array函數來為ActiveX 列表框或組合框控制項賦值,例如:

Me.ListBox1.List =Array("國慶節", "中秋節", "元旦", "春節")

給列表框添加了4個節日名。

 

4. 可以使用Array函數創建控制項數組,即將控制項名稱作為Array函數的參數。然後,可以將數組元素當作相應的控制項對象來使用,例如:

Private SubCommandButton1_Click()

    Me.ListBox1.Clear

    Me.ListBox1.List = Array("國慶節", "中秋節", "元旦", "春節")

    Me.ListBox1.ListIndex = 0

End Sub

 

Private SubCommandButton2_Click()

    Dim myArray As Variant

    myArray = Array(ListBox1, CommandButton1)

    MsgBox myArray(0).Text

End Sub

運行後的結果如下圖1所示。

 圖1

 

示例

示例1使用Array函數創建數組

Sub TestArray()

    Dim myArray() As Variant

 

    '從逗號分隔的字符串列表中創建數組

    myArray = Array("One","Two", "Three")

    '顯示數組元素

    MsgBox myArray(0) & vbCr &myArray(1) & vbCr & myArray(2)

    '也可以使用數值作為參數

    myArray = Array(10, 20, 30)

    '顯示數組元素

    MsgBox myArray(0) & vbCr &myArray(1) & vbCr & myArray(2)

End Sub

 

示例2:下面的示例先使用Array函數將一組值賦給變量myArray,然後將該變量中的值輸入到工作表Sheet1的第1行。

Option Base 1

Sub ArrayTest()

Dim myArray As Variant

Dim iCount As Integer

 

myArray = Array("姓名",」性別」,」成績」)

 

With Worksheets(「Sheet1」)

    ForiCount = 1 To UBound(myArray)

       .Cells(1,iCount).Value = myArray(iCount)

    NextiCount

End With

End Sub

運行代碼後的結果如圖2所示。

 圖2

  

在某些情形下,需要檢驗某個變量是否為數組,以便於後續操作,此時,可以使用IsArray函數。

 

IsArray函數語法

IsArray函數返回一個Boolean值,表明傳遞給該函數的變量是否為數組。其語法為:

IsArray(varname)

其中:

 

編程技巧

在不確定使用的變量是否為數組時,如果試圖訪問不存在的數組中的元素或者對其使用數組函數(如LBound或者UBound),就會導致錯誤。此時,可以先使用IsArray函數來確定其是否為數組,然後再進行後續相應的操作。

例如,下面的代碼段檢查變量myArray是否為數組,若不是則退出:

If NotIsArray(myArray) Then Exit Sub

 

 

相關連結:

VBA進階 | 數組基礎01: 用最淺顯的介紹來幫助你認識數組

VBA進階 | 數組基礎02: 簡單的數組操作

VBA進階 | 數組基礎03: 二維數組

VBA進階 | 數組基礎04: 運用數組處理工作表數據

VBA進階 | 數組基礎05: 動態數組

 

 

本文屬原創文章,轉載請註明出處。

歡迎在下面留言,完善本文內容,讓更多的人學到更完美的知識。

歡迎關注[完美Excel]微信公眾號:

方法1—在微信「添加朋友」或者通訊錄中搜索「完美Excel」或者「excelperfect」後點擊關注。

方法2—掃一掃下面的二維碼

相關焦點

  • 數組的運算及相關函數
    昨天我們學習了數組的訪問,今天一起來看看數組的最後一節內容:數組的運算與相關函數吧!1、數組的四則運算我們可以對數組進行四則運算,一般參與的數組均為相同形狀的,即維數向量相同。例如:a<-array(1:6,c(2,3))af<-array(7:13,c(2,3))fg<-a+f-3gk<-3*a-f/ak註:從例子中我們可以看到,數組的四則運算的乘法和除法實際上是數組中對應位置的元素做運算。
  • PHP數組函數有哪些?
    array_combine函數定義:array_combine() 函數通過合併兩個數組來創建一個新數組,其中的一個數組元素為鍵名,另一個數組的元素為鍵值。php$array = array( "php基礎"=>"php", "java基礎"=>"java", "jsp基礎"=>"jsp");echo key($array); echo "<br>";echo current($array); echo "<br>";echo next($array); echo "<br>";echo end
  • 巧用 PHP 數組函數
    0x00 前言PHP 的數組是一種很強大的數據類型,與此同時 PHP 內置了一系列與數組相關的函數可以很輕易的實現日常開發的功能
  • [基礎] PHP常見數組函數與實例,看這篇足矣
    或許你早就知道如何用,或許對你有些許幫助,可是最後還是感謝你的關注鞏固php基礎,免費分享給你視頻教程【PHP7.x入門到進階,初學者直接獲取!】,公眾號裡回覆:20200202   免費領取提取碼!一、數組的一些關於鍵名和值的基礎操作函數1.獲取數組所有的鍵或值:array_keys() array_values()$arr_keys = array_keys($array);$arr_values = array_values($arr);
  • VBA基礎-數組知識
    nbsp;         array(4,6),這裡array是個函數,功能是返回一個包含數組          array(array(34,3,4),array("q","r")) 
  • numpy中數組操作的相關函數
    在numpy中,有一系列對數組進行操作的函數,在使用這些函數之前,必須先了解以下兩個基本概念副本視圖副本是一個數組的完整拷貝
  • 如何運用PHP函數array_push()實現數組元素的增加
    如何運用PHP函數array_push()實現數組元素的增加 我們為大家介紹了如何使用PHP函數array_push()在數組的頭尾增加數據元素的方法,希望對初學PHP語言的朋友們有所幫助。
  • VBA數組函數Split(),將文本內容轉化為數組的實用便捷函數
    一:在處理字符串時可以使用Split 函數將字符串按指定的分隔符分開並以數組返回,Split 函數返回一個下標從零開始的一維數組,包含指定數目的子字符串,語法如下:Split(expression[, delimiter[, limit[, compare]]])
  • 【數組分享】PHP函數array_filter ()分享(2020-10-31)
    array_filter () 用回調函數過濾數組中的單元。 array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )依次將 array 數組中的每個值傳遞到 callback 函數。
  • WPJAM Basic 內置的數組處理函數
    PHP 有很多非常好用的數組處理函數,查看 PHP 官方文檔,數組函數都有 80 多個,但是在使用過程,還是有一些數組的操作使用比較多,我就把這些函數整理成工具函數
  • PHP數組排序函數大全
    介紹在眾多數組排序函數中,最常用的排序函數:sort、rsort、asort、arsort。主要區別1.有些函數基於 array 的鍵來排序,而其他的基於值來排序的:$array['key'] = 'value';。
  • 有趣的JavaScript原生數組函數
    數組對象繼承自Object.prototype,對操作符返回的數組類型返回對象而不是array。然而,[]實例,數組也返回true。變量,類數組對象的實現更複雜,例如字符串對象,參數對象,參數對象不是數組的實例,但有長度屬性,並能通過索引取值,所以能像多個相同進行循環操作。在這裡,我將複習一些複製原型的方法,並探索這些方法的用法。
  • PHP中數組元素升序、降序及重新排序的函數
    需要深入學習下PHP數組的相關操作。首先接觸的就是數組元素的升序、降序的排序問題。1、快速創建數組的函數range()比如range()函數可以快速創建從1到9的數字數組: 以下為引用的內容: <?
  • SUMPRODUCT函數的進階操作技巧
    之前給大家介紹了SUMPRODUCT函數的基礎用法,今天再給大家介紹下它的進階用法,讓你看看什麼是萬能的公式首先再回顧下SUMPRODUCT函數基本函數語法結構SUMPRODUCT(array1, [array2], [array3], ...)
  • 一文學會JS的數組函數:slice()
    JavaScript內置了有很多原生函數,理解併合理運用這些函數,能大大提高我們的開發效率。本文結合實例講解slice(),後期將講解他的另兩個兄弟splice () 和split ()。這三個數組的原生函數,或許是因為它們的名字比較相似,會讓初學者有點摸不著頭腦。同時關於這三個函數之間的區別也是面試時的熱門話題!
  • js數組常用的幾個函數總結
    javascript中,數組是很常用的。數組的函數很多,下面分享幾個常用的數組函數。每個函數都用瀏覽器測試過。     下面每個測試結果都是在google瀏覽器console上執行的。length屬性。數組的length屬性,返回數組的元素個數.JavaScript使用一個32位整數,保存數組的元素個數。
  • Excel函數公式大全之利用MMULT函數計算兩個數組矩陣的乘積
    各位Excel天天學的小夥伴們大家好,歡迎收看Excel天天學出品的excel2019函數公式大全課程。今天我們依舊要學習的是Excel函數中的數學函數MMULT函數,計算兩個數組的矩陣乘積。今天這個例子也是非常的簡單,就是利用MMULT函數計算兩個不等數組的矩陣乘積。
  • 一起學JAVA——數組和函數
    今天我們高級數據類型——數組以及函數的作用。函數(方法)函數的定義函數就是一段有名字的代碼,可以完成某一特定功能。方法(函數)是java的最小代碼重用單位,方法(函數)是為了重用代碼。返回值類型:函數運行結束後返回的值的類型,在類型非void情況下必須返回,而且必須類型匹配。函數的重載多個函數的函數名相同,參數列表不同(個數、順序、類型),這就是函數的重載。在調用函數的時候通過傳入的實參找到匹配的函數調用。
  • 【數組分享】PHP函數array_merge_recursive ()分享(2020-11-11)
    array_merge_recursive () 遞歸地合併一個或多個數組。 array array_merge_recursive ( array $array1 [, array $... ] )array_merge_recursive() 將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。
  • Excel函數公式大全之利用MDETERM函數計算數組的矩陣行列式的值
    各位Excel天天學的小夥伴們大家好,歡迎收看Excel天天學出品的excel2019函數公式大全課程。今天我們依舊要學習的是Excel函數中的數學函數MDETERM函數。今天我們這個例子是計算數組的矩陣行列式的值。