vba 将数组作为参数传递_将VBA数组写入工作表时转置(Transpose)的利用
大家好,最近推出的內容是“VBA信息獲取與處理”中的部分內容,這套教程面向中高級人員,涉及范圍更廣,實用性更強,現在的內容是第四個專題“EXCEL工作表數據的讀取、回填和查找”的內容。
第四節 將VBA數組寫入工作表時轉置(Transpose)的利用
轉置(Transpose)是數組應用中經常用到的知識點,在使用Excel表格的過程中,當我們想將橫行轉成豎列(或將縱向的數據切換成橫向排列),又希望這前后兩個排列方式不一樣的數據相互關聯的時候就可以利用轉置函數transpose了。但要注意這個函數是工作表函數,所以利用這個函數的時候必須用Application.Transpose(Arr)。
1 一維數組回填工作表時的轉置(Transpose)
如果需要一維數組按列的回填可以用下面的語句:MyRange.Value = Application.Transpose(Arr)
具體代碼如下:
Sub MYNZG() '一維數組數據的轉置回填方案
Dim Arr As Variant
Dim MyRange As Range
Sheets("SHEET4").Select
Arr = Array("大象", "老虎", "獅子", "狐貍")
Set MyRange = Range("A1")
Set MyRange = MyRange.Resize(UBound(Arr) + 1, 1)
MyRange.ClearContents
MyRange.Value = Application.Transpose(Arr)
MsgBox "ok!"
End Sub
代碼截圖:
代碼講解:這里需要注意的是基準單元格區域的擴展語句變為:Resize(UBound(Arr) + 1, 1)這是列的擴展了,所以轉置語句相應就是Application.Transpose(Arr) 。這里要注意點是調整大小的參數是反向的。
2 二維數組回填工作表時的轉置(Transpose)
如果需要二維數組按列的回填可以用下面的語句:MyRange.Value = Application.Transpose(Arr)
具體代碼如下:
Sub MYNZH() '二維數組數據的轉置回填方案
Dim Arr As Variant
Dim MyRange As Range
Sheets("SHEET4").Select
Arr = Sheets("SHEET2").Range("A1:b9")
Set MyRange = Range("A1")
Set MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1))
MyRange.ClearContents
MyRange.Value = Application.Transpose(Arr)
MsgBox "ok!"
End Sub
代碼截圖如下:
代碼講解:從工作表讀取數組變量時,VBA將自動調整數組的大小,以保持工作表上的范圍,所以不必關心數組的大小。但是,將數組從VBA寫入工作表時,必須調整目標區域的大小以容納數組。我們在前面的例子中已經看到了這一點。
如果傳遞給工作表的數組小于其寫入的范圍,則未使用的單元格將出現“#N/A”錯誤。如果傳遞的數組大于其寫入的范圍,則將在右側或底部截斷該數組以適合該范圍。
本節知識點回向:如何理解轉置?一維數組和二維數組轉置是如何利用的?
本專題參考程序文件:004工作表.XLSM
VBA是利用Office實現自己小型辦公自動化的有效手段,這是我對VBA的應用界定。在取代OFFICE新的辦公軟件沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!學習VBA是個過程,也需要經歷一種枯燥的感覺,如太白詩云:眾鳥高飛盡,孤云獨去閑。相看兩不厭,只有敬亭山。
“水善利萬物而不爭”,綿綿密密,微則無聲,巨則洶涌。學習亦如此,知道什么是自己所需要的,不要蜷縮在一小塊自認為天堂的世界里,待到暮年時再去做自欺欺人的言論。要努力提高自己,用一顆充滿生機的心靈,把握現在,這才是進取。越是有意義的事情,困難會越多。愿力決定始終,智慧決定成敗。不管遇到什么,都是風景。看淡紛爭,看輕得失。茶,滿也好,少也好,不要計較;濃也好,淡也好,其中自有值得品的味道。去感悟真實的時間,靜下心,多學習,積累福報。而不是天天混日子,也不是天天熬日子。在后疫情更加嚴峻的存量殘殺世界中,為自己的生存進行知識的儲備,特別是新知識的儲備。學習時微而無聲,利用時則巨則洶涌。
我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重復我之前的經歷,我根據自己多年VBA實際利用經驗,推出了六部VBA專門教程。
第一套:VBA代碼解決方案 是VBA中各個知識點的講解,覆蓋絕大多數的VBA知識點,初學必備;
第二套:VBA數據庫解決方案 數據庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。
第三套:VBA數組與字典解決方案 數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。
第四套:VBA代碼解決方案之視頻 是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。
第五套:VBA中類的解讀和利用 這是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。
第六套教程:《VBA信息獲取與處理》,這是一部高級教程,涉及范圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程序信息獲得、隨機信息的利用、電子郵件的發送、VBA互聯網數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定制工作表信息函數等等內容。如需要可以可以WeChat: NZ9668
學習的過程也是修心的過程,修一個平靜的心。在代碼的世界中,心平靜了,心情好了,身體自然而然就好。心靜則正,內心里沒有那么多邪知邪見,也就沒有那么多妄想。利人就是利己。這些教程也是為幫助大家起航,助上我自己之力,我的上述教程是我多的經驗的傳遞,大家可以根據以上資料1,3,2,6,5或者是4,3,2,6,5的順序逐漸深入的逐漸學習。
每一分收獲都是成長的記錄,怎無憑,正是這種執著,成就了朝霞的燦爛。最后將一闕詞送給致力于VBA學習的朋友,讓大家感受一下學習過程的枯燥與執著:
浮云掠過,暗語無聲,
唯有清風,驚了夢中啼鶯。
望星,疏移北斗,
奈將往事雁同行。
阡陌人,昏燈明暗,
忍顧長亭。
多少VBA人,
暗夜中,悄聲尋夢,盼卻天明。
怎無憑!
分享成果,隨喜正能量
總結
以上是生活随笔為你收集整理的vba 将数组作为参数传递_将VBA数组写入工作表时转置(Transpose)的利用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么安装显卡驱动 显卡驱动安装方法
- 下一篇: 无法进去u盘启动不了怎么办啊 U盘无法启