Excel XP中圖片的智能刷新
在Excel工作表中,通過VBA可以很容易地實現(xiàn)當某些單元格內(nèi)容發(fā)生變更時,相關圖片也進行同步變更的效果。但實際工作中,VBA程序的運行常常會受到各種原因限制而不能達到預期目的,況且并不是人人都能熟練運用VBA。那么,如果不借助于VBA的話,是否就不可能辦到呢?
我們來看這樣一個實例:這是一個利用Excel制作的“萬年歷”,功能是查詢?nèi)我荒甑墓珰v、農(nóng)歷、節(jié)氣、節(jié)日、生肖等。在使用過程中,當使用者指定查詢?nèi)掌跒椋痹路輹r,它能夠顯示1月份的日歷,并配有當前月份插圖及當前年份生肖圖,如圖(1)所示。當查詢?nèi)掌跒椋苍路輹r,它顯示2月份的日歷并自動刷新月歷插圖,同時,由于正好跨了一個陰歷年,工作表還一并刷新了生肖圖片,由“蛇”變?yōu)椤榜R”如圖(2)所示。
圖(1)
圖(2)
這個“萬年歷”的制作過程沒有使用任何VBA程序,那么,它是如何實現(xiàn)動態(tài)刷新圖片這一神奇的效果的呢?
自從Excel 5.0 開始,Excel在原有“窗體”控件之外新增了 ActiveX 控件。實際使用中,當我們往工作表中添加某個ActiveX 控件時,比如 “CommandButton” 控件,很少人會在意“編輯欄”發(fā)生的變化,如下圖:(如果您的工作表視圖中沒有“控件工具箱”,請右擊工具欄,選擇“控件工具箱”)
(圖三)
在工作表中新建一個按鈕控件以后,“編輯欄”中顯示為“=EMBED("Forms.CommandButton.1","")”,這是該嵌入對象的表達式。這個表達式就是關鍵所在。如果我們在A1單元格里存入一張圖片,再將表達式改寫為“=A1”會怎樣呢?結果這個CommandButton控件獲得了“A1”單元格的“視”(視:即view,其定義為用戶和文檔之間可資完成全部輸入、選擇及文檔編輯的中介物。文檔管理著數(shù)據(jù),但由視來顯示它的部分或全部并反饋信息。此處“視”作類比)。如下圖所示:
(圖四)
由此我們可以知道,假如預先向某些單元格中存入圖片,那么,當我們改變這個CommandButton控件所指向的單元格地址后,就能使之“看”到不同的被指向單元格所顯示的內(nèi)容。這樣,就可以有規(guī)則地實現(xiàn)圖片內(nèi)容的“刷新”了。
掌握了上面這個技術特點以后,我們只需要實現(xiàn)能動態(tài)變更目標單元格地址即可。下面仍以“萬年歷”來舉例說明該方案的具體實現(xiàn)方法。在這個例子里,我們要實現(xiàn)的是當月份發(fā)生變更時,顯示不同的月歷插圖。
設計好“萬年歷”工作表后,將一空白工作表命名為“月歷圖”,在該工作表的A1-A12單元格中分別預置12張圖片,圖片預先調(diào)整為實際要顯示的大小,并取消網(wǎng)格線(網(wǎng)格線也是該單元格“視”的一部分,如果需要顯示的話可以一并保留),以備12個月份使用,如下圖所示:(圖五)
然后回到工作表“萬年歷”,將用于輸入查詢月份的單元格命名為“月份”,該單元格中的數(shù)值將作為指向工作表“月歷圖”中不同圖片的指針。命名的目的是為了增加函數(shù)的可讀性。在工作表“萬年歷”中插入一CommandButton控件,將其表達式寫為“=月歷插圖”,雖然當前的變量“月歷插圖”尚未定義,不過沒關系,這可以通過插入名稱來進行內(nèi)部定義:點擊“插入->名稱->定義”,這時彈出“定義名稱對話框”,在“在當前工作薄中的名稱”中鍵入“月歷插圖”,令“引用位置 =OFFSET(月歷圖!$A$1,月份-1,0)”,點擊“添加”“關閉”完成操作。
這里用到了OFFSET() 函數(shù),該函數(shù)的語法簡述如下:
OFFSET(起始單元格,下偏移行數(shù),右偏移列數(shù)),起始單元格自身偏移量為零,偏移數(shù)值為負數(shù)時則向相反方向移動。
文中公式“=OFFSET(月歷圖!$A$1,月份-1,0)”的意思是告訴CommandButton控件,從工作表“月歷圖”的A1單元格開始,根據(jù)不同的月份向下移動月份-1個單元格,并將該單元格的內(nèi)容顯示出來。上述操作完成后,其結果顯示如下:(圖六)
隨著“月份”的變更,這個CommandButton控件將指向不同的圖片,這也就完成了Excel 工作表中圖片的智能刷新。
上述方法對于利用Excel工作表來處理配有圖片的人事檔案、產(chǎn)品及零備件庫存等資料,可以實現(xiàn)同步調(diào)用相關圖片并顯示于指定位置,達到圖文并茂的效果。其它方面的應用,讀者可以自行發(fā)揮。
(編者注:示范文“萬年歷”,可到Excel Home(http://www.excelhome.net下載使用及參考)
"images/win0201/image014.jpg" v:shapes="_x0000_i1027">
(圖三)
在工作表中新建一個按鈕控件以后,“編輯欄”中顯示為“=EMBED("Forms.CommandButton.1","")”,這是該嵌入對象的表達式。這個表達式就是關鍵所在。如果我們在A1單元格里存入一張圖片,再將表達式改寫為“=A1”會怎樣呢?結果這個CommandButton控件獲得了“A1”單元格的“視”(視:即view,其定義為用戶和文檔之間可資完成全部輸入、選擇及文檔編輯的中介物。文檔管理著數(shù)據(jù),但由視來顯示它的部分或全部并反饋信息。此處“視”作類比)。如下圖所示:
(圖四)
由此我們可以知道,假如預先向某些單元格中存入圖片,那么,當我們改變這個CommandButton控件所指向的單元格地址后,就能使之“看”到不同的被指向單元格所顯示的內(nèi)容。這樣,就可以有規(guī)則地實現(xiàn)圖片內(nèi)容的“刷新”了。
掌握了上面這個技術特點以后,我們只需要實現(xiàn)能動態(tài)變更目標單元格地址即可。下面仍以“萬年歷”來舉例說明該方案的具體實現(xiàn)方法。在這個例子里,我們要實現(xiàn)的是當月份發(fā)生變更時,顯示不同的月歷插圖。
設計好“萬年歷”工作表后,將一空白工作表命名為“月歷圖”,在該工作表的A1-A12單元格中分別預置12張圖片,圖片預先調(diào)整為實際要顯示的大小,并取消網(wǎng)格線(網(wǎng)格線也是該單元格“視”的一部分,如果需要顯示的話可以一并保留),以備12個月份使用,如下圖所示:(圖五)
文章錄入:Kevin 責任編輯:Kevin
(責任編輯:admin)
- ·Excel VBA編輯語句集300條
- ·【技巧】excel文件破解密碼
- ·【Excel VBA】FileDialog 用法之 打開
- ·VBA修改ACCESS及EXCEL安全設置(源碼)
- ·實用的GET函數(shù)
- ·日期改為顯示星期幾的自定義涵數(shù)
- ·VBA在Excel 2000中的應用一例
- ·ActiveX在Excel中的運用
- ·檢查重復字段值的方法
- ·Excel中 BASIC 程序的運行
- ·Excel XP中圖片的智能刷新
- ·Excel成績分析處理程序
- ·創(chuàng)建自己的EXCEL函數(shù)
- ·用Excel制作公交向?qū)?/a>
- ·使用ADO獲取外部數(shù)據(jù)
- ·Excel中如何編程判斷字符顏色