贊贊小屋

【Excel VBA自動化】Cells.Value取得儲存格位址,程式AddConnector畫出數學向量的箭頭線條

Excel圖案中的線條設定為箭頭,可作為指示圖形或數學中的向量。本文介紹VBA的AddConnector、ShapeRange.Line、With…End、ActiveSheet.Cells.Value等方法,設計程式依照Excel所輸入的儲存格位址畫出線條箭頭。

一、AddConnector

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

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

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

【Excel VBA自動化】Cells.Value取得儲存格位址,程式AddConnector畫出數學向量的箭頭線條 VBA自動化 第1張

二、繪製連接條

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

【Excel VBA自動化】Cells.Value取得儲存格位址,程式AddConnector畫出數學向量的箭頭線條 VBA自動化 第2張

三、設定圖形格式

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

【Excel VBA自動化】Cells.Value取得儲存格位址,程式AddConnector畫出數學向量的箭頭線條 VBA自動化 第3張

四、With Selection.ShapeRange.Line

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

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

.EndArrowheadStyle = msoArrowheadTriangle:結束箭頭類型為箭頭。
.Weight = 3:寬度設定為3pt。

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

【Excel VBA自動化】Cells.Value取得儲存格位址,程式AddConnector畫出數學向量的箭頭線條 VBA自動化 第4張

五、繪製有箭頭連接器

執行巨集,以VBA程式繪製有箭頭的粗連接直線。

【Excel VBA自動化】Cells.Value取得儲存格位址,程式AddConnector畫出數學向量的箭頭線條 VBA自動化 第5張

六、ActiveSheet.Cells(x , y).Value

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

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

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

【Excel VBA自動化】Cells.Value取得儲存格位址,程式AddConnector畫出數學向量的箭頭線條 VBA自動化 第6張

七、儲存格參照繪圖

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

【Excel VBA自動化】Cells.Value取得儲存格位址,程式AddConnector畫出數學向量的箭頭線條 VBA自動化 第7張

Excel與VBA資料交流

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

本網站所有內容皆受版權保護,网站备案编号:苏ICP备14051307号-1