今日的內容是第一章「初識VBA代碼及應用VBA代碼」的第五節「錄製宏時,使用絕對(Absolute)引用和相對(Relative)引用的區別」,「VBA之EXCEL應用」從簡單的錄製宏實現一直講到窗體的搭建,大家可以非常容易的掌握相關的知識,這套教程面向初學人員,共三冊,十七章,都是我們在利用EXCEL工作過程中需要掌握的知識點,希望大家能掌握利用。
第五節 錄製宏時,使用絕對(Absolute)引用和相對(Relative)引用的區別
大家好,我們繼續VBA的學習,在上一講中,我們講到對於初學VBA人員,可以錄製一段代碼讓一些重複的工作能自動完成。這不失為一種提高效率的方法。但我們在錄製宏的時候,一定要注意區別絕對引用和相對引用。這節我將就這個問題給大家以詳細的講解。
1 絕對引用時代碼的錄製效果
所謂絕對引用,是單元格中的絕對單元格引用(例如 $A$1)總是在指定位置引用單元格。如果公式所在單元格的位置改變,絕對引用保持不變。如果多行或多列地複製公式,絕對引用將不作調整。默認情況下,新公式使用相對引用,需要將它們轉換為絕對引用。例如,如果將單元格B2 中的絕對引用複製到單元格B3,則在兩個單元格中一樣,都是 $A$1。
在VBA錄製宏的時候默認採用的是絕對引用的方式。
例如,我們要錄製一段宏,錄製的內容是:在單元格A1中錄入:「VBA世界」,A2中錄入「VBA學習」,A3中錄入「VBA代碼」
我們看一下錄製的效果:
Sub 宏2()
Range("A1").Select
ActiveCell.FormulaR1C1 = "VBA世界"
Range("A2").Select
ActiveCell.FormulaR1C1 = "VBA學習"
Range("A3").Select
ActiveCell.FormulaR1C1 = "VBA代碼"
End Sub
代碼截圖:
2 相對引用時代碼的錄製效果
所謂相對單元格引用(例如 A1)是基於包含公式和單元格引用的單元格的相對位置。如果公式所在單元格的位置改變,引用也隨之改變。如果多行或多列地複製公式,引用會自動調整。默認情況下,新公式使用相對引用。例如,如果將單元格 B2 中的相對引用複製到單元格 B3,將自動從 =A1 調整到 =A2。
在錄製宏的時候,如果需要相對引用,需要按如下的處理方式:
第一:先點擊「使用相對應用」;第二:再點擊「錄製宏」
同樣是實現:錄製的內容是:在單元格A1中錄入:「VBA世界」,A2中錄入「VBA學習」,A3中錄入「VBA代碼」的一段宏,我們看看在選擇相對引用的情況下產生的代碼:
Sub 宏3()
ActiveCell.FormulaR1C1 = "VBA世界"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "VBA學習"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "VBA代碼"
End Sub
代碼截圖:
3 絕對引用錄製宏和相對引用錄製宏的效果區別
兩種方法的代碼在實現效果上有什麼區別呢?我們先在工作表窗口建立兩個運行按鈕分別來實現這兩種引用的效果,如下圖所示的兩個按鈕。
同時我給出了當前活動單元格的位置;
我們先點擊「絕對引用」的運行按鈕,實現的效果如下:
我們仍舊把光標點到「C9」單元格的位置,點擊「相對引用」的運行按鈕,實現的效果如下:
此時我們發現,我們填入的三組字符出現在了C9,C10,C11 三個單元格內。也就是說,在相對引用條件下錄入的代碼是以相對於當前活動單元格的錄入效果。
今日內容回向:
1)什麼是絕對引用,什麼是相對引用?
2)絕對引用和相對引用條件下錄製的宏代碼有何不同?
3) 絕對引用和相對引用條件下錄製的宏代碼在實現效果上有何不同?
本講內容參考程序文件:工作簿01.xlsm
分享成果,隨喜正能量
VBA的應用範圍及學習方法:
VBA是利用Office實現個人小型辦公自動化的有效手段(工具)。這是我對VBA的應用界定。在取代OFFICE新的辦公軟體沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!
我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重複我之前的經歷,我根據自己多年VBA實際利用經驗,推出了七部VBA專門教程。
第一套:VBA代碼解決方案 是VBA中各個知識點的講解,教程共147講,覆蓋絕大多數的VBA知識點,提供的程序文件更是一座不可多得的代碼寶庫,是初學及中級人員必備教程;目前這套教程提供的版本是修訂第二版,程序文件通過32位和64位兩種OFFICE系統測試。
第二套:VBA資料庫解決方案 資料庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。目前這套教程提供的是修訂第一版教程,程序文件通過32位和64位兩種OFFICE系統測試。
第三套:VBA數組與字典解決方案 數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。
第四套:VBA代碼解決方案之視頻 是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。這套教程是第一套教程(修訂一版)的視頻講解,視頻更易接受。
第五套:VBA中類的解讀和利用這是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。這套教程的領會主要是讀者的領悟了,領悟一種佛學的哲理。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。
第六套教程:VBA信息獲取與處理,這是一部高級教程,涉及範圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程式信息獲得、隨機信息的利用、電子郵件的發送、VBA網際網路數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定製工作表信息函數等等內容。程序文件通過32位和64位兩種OFFICE系統測試。
第七套教程:VBA之EXCEL應用 這是一部初級教程這部教程共三冊,從從創建宏、對話框、工作簿和工作表對象、單元格對象等基礎內容講起,到循環結構、錯誤處理、字符串操作、日期和時間、事件、數組應用,函數過程等方面,一直講解到控制項和窗體對象的應用都是我們提高自己EXCEL水平的必須。
以上各教程學習順序:713265或者743265。其中第四套是對第一套的視頻講解,所以第一和第四隻選其一即可。