在VBA中,,Name對(duì)象代表定義的名稱,所有的Name對(duì)象組成了Names集合,。下面,,詳細(xì)介紹一些對(duì)名稱進(jìn)行基本操作的VBA代碼。
創(chuàng)建名稱 可以使用Names集合的Add方法來創(chuàng)建名稱,。
下面的代碼在當(dāng)前工作簿中創(chuàng)建名稱“MyName”: ActiveWorkbook.Names.Add_ Name:='MyName', _ RefersTo:='=Sheet1$B$2:$D$6' 或者: ActiveWorkbook.Names.Add_ Name:='MyName', _ RefersToR1C1:='=Sheet1R2C2:R6C4'
代碼將當(dāng)前工作簿的工作表Sheet1中的單元格區(qū)域B2:D6命名為MyName,,該名稱為全局名稱,即工作簿級(jí)名稱。在命名的名稱中,,應(yīng)遵守名稱的命名約定,,例如不能出現(xiàn)空格和單元格引用。在對(duì)命名區(qū)域使用A1樣式的引用時(shí),,如果不是使用絕對(duì)引用,,則所命名的區(qū)域?qū)?huì)不確定。
如果要?jiǎng)?chuàng)建局部名稱,,即工作表級(jí)名稱,,則要在所命名的名稱前加上工作表名,例如代碼: ActiveWorkbook.Names.Add_ Name:='Sheet1!MyWKSName',_ RefersToR1C1:='=Sheet1R2C2:R6C4' 在工作表Sheet1中創(chuàng)建名為MyWKSName的名稱,。 也可以通過引用指定的工作表來創(chuàng)建局部名稱,,例如代碼: Worksheets('Sheet1').Names.Add_ Name:='MyWKSName1', _ RefersTo:='=Sheet2!$A$1:$B$6' 在工作表Sheet2中創(chuàng)建名為MyWKSName1的名稱。
可以簡(jiǎn)單地使用Range對(duì)象的Name屬性來創(chuàng)建名稱,。例如代碼: Worksheets('Sheet1').Range('C2:D8').Name= 'MyWBName' 將工作表Sheet1中的單元格區(qū)域C2:D8命名為MyWBName,。 Worksheets('Sheet2').Range('C5:E9').Name= 'Sheet2!MyLocalName' 在工作表Sheet2中創(chuàng)建局部名稱MyLocalName。 注意,,使用Name屬性只能命名單元格區(qū)域,,不能夠用來命名公式、數(shù)字等,。
可以在當(dāng)前工作表中命名其他工作表中的區(qū)域?yàn)楣ぷ鞅砑?jí)名稱,,例如代碼: Worksheets('Sheet1').Range('D6:F8').Name= 'Sheet2!MyLocalName1' 或者: Worksheets('Sheet2').Names.Add_ Name:='MyLocalName1', _ RefersTo:='=Sheet1!$D$6:$F48' 在工作表Sheet2中命名工作表級(jí)名稱,該名稱引用的區(qū)域?yàn)楣ぷ鞅?/span>Sheet1中的單元格區(qū)域D6:F8,。
下面的代碼命名常量,。代碼: Names.AddName:='MyNum', RefersTo:=100 將數(shù)字100命名為“MyNum”。 代碼: Names.AddName:='MyStr', RefersTo:='完美Excel' 將字符串“完美Excel”命名為“MyStr”,。
下面的代碼命名數(shù)組,。代碼: DimLocArray(10) Dimi As Integer Fori = 1 To 10 LocArray(i) = i Nexti Names.AddName:='MyArray', RefersTo:=LocArray 代碼先對(duì)數(shù)組LocArray賦值,然后將該數(shù)組命名為MyArray,。
下面的代碼對(duì)公式命名: Names.AddName:='MyFormulas', _ RefersTo:='=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)' 代碼命名了一個(gè)公式,,可用來創(chuàng)建動(dòng)態(tài)區(qū)域。
通過命名數(shù)字,、字符串,、數(shù)組或公式來存儲(chǔ)經(jīng)常要使用的值,可以避免被意外修改并減少對(duì)象引用,。 重命名現(xiàn)有的名稱 下面的代碼將工作表Sheet2中的名稱MyWBName修改為MyName: Worksheets('Sheet2').Names('MyWBName').Name= 'MyName' 這種方法只能重命名定義的單元格區(qū)域名稱,,不能重命名代表公式、常量的名稱,。
改變所選區(qū)域的名稱的引用區(qū)域 假設(shè)工作表Sheet11中有一個(gè)名稱MyCustomName的單元格區(qū)域A1:B4,,選擇該區(qū)域并運(yùn)行下面的代碼: Worksheets('Sheet11').Names.AddSelection.Name.Name, Sheet11.Range('B6:C9') 此時(shí),名稱MyCustomName代表的單元格區(qū)域被修改為B6:C9,。 |
|