小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

跟煙花入門(mén)VBA之28:對(duì)象(四)

 fzchenwl 2015-03-31

 今天我們聊聊如何在VBA代碼里引用對(duì)象

  引用對(duì)象是非常重要的,因?yàn)樵诖a里訪問(wèn)對(duì)象時(shí)必須指明需要操作的對(duì)象。
  例如在日常中我們找某人的,肯定會(huì)喊某人的名字(不認(rèn)識(shí)的可以喊美女帥哥),人家才會(huì)理你。
  可在
VBA代碼中,你必須實(shí)打?qū)嵉闹该髂硞€(gè)特定的對(duì)象(或者從集合中引用某個(gè)特定的成員),代碼才會(huì)響應(yīng)你。

  上節(jié)有講到集合,通過(guò)情況下,我們都是引用集合中某個(gè)特定的成員對(duì)象。
  如何從集合中引用一個(gè)對(duì)象呢,只需在集合的名稱(chēng)后面的括號(hào)中放入過(guò)索引號(hào)或?qū)ο竺?/span>就行了。

  示例:

   Worksheets ('sheet1')
   '當(dāng)前活動(dòng)工作簿中的工作表集合中的第一個(gè)工作表
   Workbooks (1)
   '工作簿集合中的第一個(gè)

  當(dāng)我們輸入的索引號(hào)或名稱(chēng)無(wú)效時(shí)會(huì)有一個(gè)下標(biāo)越界”的錯(cuò)誤提示。
  當(dāng)看到這個(gè)錯(cuò)誤提示時(shí),就要檢查引用集合時(shí)的所用的索引號(hào)或名稱(chēng)是否有誤。


  注意:這里有個(gè)問(wèn)題,比如當(dāng)前工作簿中有一個(gè)工作表的名稱(chēng)為1,在沒(méi)有隱藏工作表的情況下,該工作表排在第2位。
  當(dāng)用索引號(hào)訪問(wèn)這個(gè)工作表時(shí)得這樣寫(xiě):
worksheets(2)
  當(dāng)用名稱(chēng)訪問(wèn)這個(gè)工作表名稱(chēng)為1的工作表時(shí)就得這么寫(xiě) Worksheets ('1')

  當(dāng)然,你也可以用變量來(lái)代替1”1”。

   Dim i As Integer, s As String
   i = 1
   s = '1'
   Debug.Print Worksheets(i).Name, Worksheets(s).Index
   '在立即窗口顯示工作表集合中第一個(gè)工作表的名稱(chēng),以及名稱(chēng)為1的工作表的索引號(hào)。


  之前有講過(guò)
Excel應(yīng)用程序?qū)ο蟀撕芏嗟膶?duì)象,而這些對(duì)象自身又包含了其他很多的對(duì)象。
  當(dāng)我們需要訪問(wèn)
Excel應(yīng)用程序?qū)ο髸r(shí),這是很容易的,只需要在代碼區(qū)中鍵入Application。

  其他所有的對(duì)象都在Application之下,當(dāng)我們需要訪問(wèn)某個(gè)對(duì)象時(shí),就需要一級(jí)一級(jí)訪問(wèn)。
  如果把
Excel比做一棟樓,當(dāng)我們需要訪問(wèn)到Excel這棟樓房中的1003住戶(工作表),我們先進(jìn)樓,再坐電梯到10樓(工作簿),再找到1003房間(單元格),敲1003家的房門(mén),進(jìn)入后里面還有幾間,象什么主人房,小孩房,書(shū)房,廚房這些啥(單元格的屬性),咱還可以訪問(wèn)1003家的某個(gè)房間(屬性)。

  我們把這個(gè)過(guò)程用個(gè)列表簡(jiǎn)化下

    大樓(Excel)--10樓(工作?。?/span>--1003住戶(工作表)--客廳(Value屬性)

    我們?cè)L問(wèn)1003的客廳,就經(jīng)過(guò)了這么幾個(gè)環(huán)節(jié)。

  咱回到Excel中來(lái)繼續(xù),在VBA代碼中,這些層層的對(duì)象之間(上下級(jí))咱們用圓點(diǎn)號(hào)相連(英文的.)。
   對(duì)象.屬性.屬性  第一個(gè)屬性本身返回的也是對(duì)象
      對(duì)象.方法
      對(duì)象.屬性

  通常在對(duì)象的名稱(chēng)后輸入.后會(huì)有一個(gè)自動(dòng)成員列表(只有極少數(shù)對(duì)象例外)。
  通過(guò)這個(gè)列表,可以知道該對(duì)象有哪些屬性,方法和事件。如果選中某個(gè)屬性,而該屬性返回的又是一個(gè)對(duì)象時(shí),再在屬性名后輸入
.號(hào)后還是會(huì)有自動(dòng)成員列表的。
  這個(gè)自動(dòng)成員列表,對(duì)于我們輸入代碼還是很有好處的,可以少記很多屬性和方法,提高代碼的錄入速度。



    現(xiàn)在看看如何來(lái)實(shí)現(xiàn)層層引用的:
  比如我們要訪問(wèn)當(dāng)前
Excel中的名稱(chēng)為工作簿1.xlsm 的工作簿時(shí),可以這么寫(xiě)

   Applcation.workbooks('工作簿1.xlsm')

  再接上面,如果我要訪問(wèn)工作簿1.xlsm 中的工作表 sheet1時(shí),就在上面的引用后面再加上工作表的引用

   Applcation.workbooks('工作簿1.xlsm').worksheets('sheet1')

  再繼續(xù)扒(感覺(jué)象是娛記暴料)單元格A3,那就再加個(gè)range對(duì)象

   Applcation.workbooks('工作簿1.xlsm').worksheets('sheet1').range('a3')

  再繼續(xù)挖,要獲取A3單元格的值時(shí)

   Applcation.workbooks('工作簿1.xlsm').worksheets('sheet1').range('a3').value


  扒了這么多,不知大家繞暈了沒(méi)。天啦,Excel對(duì)象何其多,才訪問(wèn)4級(jí)就這么長(zhǎng)了,要是有十幾層咱辦?
  這個(gè)寫(xiě)法咱姑且稱(chēng)之為完整引用(一般也不會(huì)這么寫(xiě)的)



  既然是完整引用,相對(duì)來(lái)說(shuō),肯定還會(huì)有個(gè)懶人引用法。


  首先由于代碼是在Excel中運(yùn)行,引用的也是Excel自身對(duì)象的話,再加上Application是對(duì)象層次中的頂級(jí),一般情況下這個(gè)是可以省略的(還是有不能省略的,據(jù)觀察,如果applcation下面的屬性返回的是對(duì)象時(shí),是可以省略application的)


  有了第一條,上面的可以省一截了:

   workbooks('工作簿1.xlsm').worksheets('sheet1').range('a3').value


  其次,如果工作簿1.xlsm是當(dāng)前活動(dòng)工作簿時(shí),工作簿的引用可以再省略:

   worksheets('sheet1').range('a3').value


  再來(lái),如果工作表 sheet1 是當(dāng)前活動(dòng)工作表時(shí),工作表集合的引用也可以省略:

   range('a3').value


  當(dāng)然省了這么多,如果還要減字符的話,其實(shí)value也可以省略(某些場(chǎng)合不能省)。

  range(“a3”).value,省到這個(gè)情況下,前面咱不是有講到當(dāng)在對(duì)象后面輸入.后會(huì)有自動(dòng)成員列表嘛,所以value這個(gè)屬性也沒(méi)有再省略的必要了。

  友情提示:在寫(xiě)代碼時(shí),相關(guān)的符號(hào)注意用英文半角。書(shū)寫(xiě)錯(cuò)誤時(shí)代碼區(qū)相應(yīng)的行會(huì)以紅色顯示并伴有提示的。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多