VBA回傳儲存格位置:如何在Excel畫出1條精準直線

VBA回傳儲存格位置是Excel自動化的基本操作,本文介紹如何在工作表畫出1條精準直線,以這個簡單範例進行延伸,說明在程式設計常常會用到的基礎對象。

一、Excel VBA畫圖

「ActiveSheet.Shapes.AddConnector(msoConnectorStraight, _」是新增連接器圖形的程式碼。由於連接器和先前文章畫直線的「AddLine」相比型態較多樣,所以多了表示屬於直線的「msoConnectorStraight」參數,其他還諸如弧線的型態。

延伸閱讀:VBA畫圖入門:Excel建立格線十字座標,addline程式畫線

第一段和第二段都是畫一條直線連接器,第一段是從A7到F2,第二段是從G7到L2,兩者都是將起點終點寫在程式裡了,因為程式碼較長,第二段是用空格加下橫線(「 _」)的方式將長程式碼分行。注意到VBA是一行程式碼作為執行對象,所以不能像Word文章那樣隨意斷行,一定要用「 _」的方式。

寫程式和寫文章一樣,有註解會比較容易理解,VBA加上註解的方式很簡單,和Excel儲存格函數公式類似,語句前面加一撇就變成單純文字,顏色同時會變成是如同截圖所示的綠色。

一、Excel VBA畫圖

二、VBA畫平行線

執行巨集後,Excel工作表果然畫出兩條平行的直線,上個步驟的程式碼最後有個「Select」,所以會選取第二個線條的狀態。

二、VBA畫平行線

三、Excel圖形格式

不管是直線或者連接器,都可以在選取的狀態下滑鼠右鍵進入「設定圖形格式」視窗。在此將「寬度」設定為「3pt」,「結束箭頭類型」為「箭頭」,這樣子是在Excel手工操作得到了一個數學上的向量。

三、Excel圖形格式

四、VBA圖形格式

將上個步驟的Excel操作編寫為VBA程式碼:

With Selection.ShapeRange.Line:開始針對直線圖形格式統一設置。

.EndArrowheadStyle = msoArrowheadTriangle:結束箭頭類型為箭頭。

.Weight = 3:寬度設定為3pt。

End With:結束圖形格式設置,類似於在Excelxcel將屬性視窗關閉。

四、VBA圖形格式

五、數學向量直線

執行巨集,以VBA程式繪製有箭頭的粗連接直線,便是數學向量圖形。

五、數學向量直線

六、VBA Cells位置取得

為方便起見,不想要把要繪製的範圍寫定在VBA裡,因此設定兩個變數作為特定的Excel儲存格,例如把目前工作表第1列第15欄儲存格值設定為變數「VecBin」,Cells(1,15)是Excel工作表上的O1。Celld是先指定列再指定欄,Excel是先指定欄再指定列。

既然設定好了變數,「AddConnector」這裡便是變數作為儲存格範圍的值,Range(VecBin),稍後會在Excel儲存格O1輸入L2,這樣Range(VecBin)便是Range(“L2”)。

不希望程式完畢是選取圖形的狀態,所以最後一行「ActiveCell.Select」,作用為選取目前的儲存格,實質效果等同於取消選取圖形。

六、VBA Cells位置取得

七、VBA回傳儲存格位置

Excel儲存格O1及O2分別輸入「L2」及「K6」,執行巨集「Connector3」,在Excel坐標平面上畫出兩個向量相加。

VBA回傳儲存格位置:如何在Excel畫出1條精準直線

Excel VBA取得儲存格的值

本文範例是依照Excel儲存格值執行VBA程式繪圖,過程中可以學到了兩個非常基本實用的VBA技巧。第一個是用空格加下橫線(「 _」)將長程式語句分行,第二個則是以Excel所輸入儲存格值作為VBA執行程式設定值,等於達成了Excel和VBA之間的資料交流,通常會比較習慣在Excel輸入資料,這個方式因此大大提升了VBA程式的靈活度。

微軟參考說明:Worksheet.Cells 屬性 (Excel)

想要更多完整的學習資源嗎?歡迎前往贊贊小屋VBA教學中心!

贊贊小屋VBA教學

最新文章: