當前位置:首頁>職場>工作表中創建圖表(在工作表中添加自定義的圖形)
發布時間:2024-01-24閱讀(11)
大家好,我們今日講解"VBA信息獲取與處理"教程中第十九個專題"工作表中對SHAPE信息的獲取及處理"的第2節"在工作表中添加自定義的圖形",這個專題是非常實用的知識點,希望大家能掌握利用。教程會提供配套的程序文件。
第二節 在工作表中添加自定義的圖形大家好,我們繼續圖形的學習,在實際的工作中,我們經常需要在工作表中添加圖形,EXCEL也給我們提供了較為強大的圖形支持,其實在工作表中添加圖形不僅可以手工進行,也可以依靠代碼來實現,而且,代碼添加圖形更為精準,控制的更為嚴格。我們這講的內容就是學習利用VBA代碼進行圖形的添加。
1 在工作表中添加自定義圖形的常用語句1)AddShape方法,返回一個Shape對象, 該對象代表工作表上的新的自選圖形。
語法:expression.AddShape (Type, Left, Top, Width, Height)
參數:
expression:一個表示 Shapes 對象的變量。
Type必需 MsoAutoShapeType 指定要創建的自選形狀的類型。MsoAutoShapeType的值列表我在本教程的最后附件有給出。在提供的程序文件中也有給出
Left必需 Single 自選圖形邊界框左上角相對于文檔左上角的位置 (以磅為單位)。
Top 必需 Single 自選圖形邊框左上角相對于文檔頂部的位置 (以磅為單位)。
Width 必需 Single 自選形狀邊框的寬度(以磅為單位)。
Height 必需 Single 自選形狀邊框的高度(以磅為單位)。
2)ShapeRange.Visible屬性,返回或設置一個MsoTriState值, 該值確定對象是否可見。讀/寫。
語法:expression.Visible
上述的MsoTriState值見下面的列表:
名稱 值 說明
msoCTrue 1 不支持
msoFalse 0 False
msoTriStateMixed -2 不支持
msoTriStateToggle -3 不支持
msoTrue -1 True
3)ShapeRange.Fill屬性,返回指定的形狀或ChartFillFormat對象的FillFormat對象, 該圖表包含形狀或圖表的填充格式屬性。此為只讀屬性。
語法:expression.Fill
expression一個代表ShapeRange對象的變量。
示例:以下示例向myDocument中添加一個矩形, 然后設置該矩形的填充的前景色、背景色和漸變。
Set myDocument = Worksheets(1)
With myDocument.Shapes.AddShape(msoShapeRectangle, _
90, 90, 90, 50).Fill
.ForeColor.RGB = RGB(128, 0, 0)
.BackColor.RGB = RGB(170, 170, 170)
.TwoColorGradientmsoGradientHorizontal, 1
End With
2 在工作表中添加自定義圖形的代碼為了實現在工作表中添加圖形,我給出下面的代碼,用于添加一個6邊型。
Sub mynzA() 在工作表中添加Shape對象
Sheets("sheet2").Select
ActiveSheet.Shapes.AddShape(msoShape6pointStar, 93, 69, 237.75, 237.75).Select
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
End With
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
End With
End Sub
Sub mynzB()
Sheets("sheet2").Select
Dim objShp As Shape
For Each objShp In Sheets("SHEET2").Shapes
If objShp.AutoShapeType<> 5 Then objShp.Delete 避免按鈕被刪除
Next
Set objShp = Nothing
End Sub
代碼截圖:

代碼講解:
1 )上述代碼實現在工作表2中添加一個msoShape6pointStar類的圖形,并給出了添加的位置及大小。當然這些參數是可以根據讀者的要求進行改變。
2)If objShp.AutoShapeType<> 5 Then objShp.Delete 避免按鈕被刪除
在清空圖形的按鈕中,上述語句可以避免添加的按鈕被刪除,因為頁面上我的的按鈕是圓角的矩形
3 在工作表中添加自定義圖形代碼的實現效果我們點擊運行按鈕:

點擊后就可以看到上述的實現效果。當然,這里實現的是一種非常簡單的案例,但讀者可以根據上述的語句改寫成自己需要的語句。這一點是學習VBA必須的。
另外對于圖形的講解,大家也可以同時參考我其他教程的內容,如圖形的移動、旋轉等等,其實都是根據基本的操作得出的結果。
本節知識點回向:
① 向工作表中添加圖形的基本操作語句是什么?
② 如何根據上述基本的語句,如何如何實現圖形的移動?
本講代碼參考文件:019工作表.xlsm

在我的系列書籍中一直在強調"搭積木"的編程思路,這也是學習利用VBA的主要方法,特別是職場人員,更是要采用這種方案。其主要的內涵:
1 代碼不要自己全部的錄入。你要做的是把積木放在合適的位置然后去修正代碼,一定要拷貝,從你的積木庫中去拷貝,然后修正代碼,把時間利用到高效的思考上。
2 建立自己的"積木庫"。平時在學習過程中,把自己認為有用的代碼放在一起,多積累,在用到的時候,可以隨時拿來。你的積木庫資料越多,你做程序的思路就會越廣。

VBA是利用Office實現個人小型辦公自動化的有效手段(工具)。這是我對VBA的應用界定。在取代OFFICE新的辦公軟件沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!
我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重復我之前的經歷,我根據自己多年VBA實際利用經驗,推出了六部VBA專門教程,目前教程均通過32位和64位兩種OFFICE系統測試。
第一套:VBA代碼解決方案 是VBA中各個知識點的講解,教程共147講,覆蓋絕大多數的VBA知識點,提供的程序文件更是一座不可多得的代碼寶庫,是初學及中級人員必備教程;目前這套教程提供的版本是修訂第二版,程序文件通過32位和64位兩種OFFICE系統測試。
第二套:VBA數據庫解決方案 數據庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。目前這套教程提供的是修訂第一版教程,程序文件通過32位和64位兩種OFFICE系統測試。
第三套:VBA數組與字典解決方案 數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。
第四套:VBA代碼解決方案之視頻 是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。這套教程是第一套教程(修訂一版)的視頻講解,聽元音更易接受。這套教程還會額外提供通過32位和64位兩種OFFICE系統測試的程序文件。
第五套:VBA中類的解讀和利用 這是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。這套教程的領會主要是讀者的領悟了,領悟一種佛學的哲理。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。
第六套教程:《VBA信息獲取與處理》,這是一部高級教程,涉及范圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程序信息獲得、隨機信息的利用、電子郵件的發送、VBA互聯網數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定制工作表信息函數等等內容。程序文件通過32位和64位兩種OFFICE系統測試。
上述教程的學習順序:1→3→2→6→5或者4→3→2→6→5。提供的程序文件更是一座巨大的代碼庫,供讀者使用,如需要可以WeChat: NZ9668

"眾鳥高飛盡,孤云獨去閑。相看兩不厭,只有敬亭山"。學習的過程也是修心的過程,修一個平靜的心。在代碼的世界中,心平靜了,心情好了,身體自然而然就好。心靜則正,內心里沒有那么多邪知邪見,也就沒有那么多妄想。利人就是利己。我的教程助力給正在努力的朋友。
"水善利萬物而不爭",綿綿密密,微則無聲,巨則洶涌。學習亦如此,知道什么是自己所需要的,不要蜷縮在一小塊自認為天堂的世界里,待到暮年時再去做自欺欺人的言論。要努力提高自己,用一顆充滿生機的心靈,把握現在,這才是進取。越是有意義的事情,困難會越多。愿力決定始終,智慧決定成敗。不管遇到什么,都是風景。看淡紛爭,看輕得失。學習時微而無聲,利用時則巨則洶涌。"路漫漫其修遠兮,吾將上下而求索"
每一分收獲都是成長的記錄,怎無憑,正是這種執著,成就了朝霞的燦爛。最后將一闕詞送給致力于VBA學習的朋友,讓大家感受一下學習過程的枯燥與執著:
浮云掠過,暗語無聲,
唯有清風,驚了夢中啼鶯。
望星,疏移北斗,
奈將往事雁同行。
阡陌人,昏燈明暗,
忍顧長亭。
多少VBA人,
暗夜中,悄聲尋夢,盼卻天明。
怎無憑!
分享我多年工作實際經驗的成果,隨喜這些有用的東西,給確實需要利用VBA的同路人。回向學習利用VBA的歷歷往事,不勝感慨,謹以這些文字以紀念,
分享成果,隨喜正能量
歡迎分享轉載→http://www.avcorse.com/read-237586.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖