人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 辦公軟件教程 > 詳細頁面

Excel 名稱(Name)及其 VBA 中的使用詳細說明圖文教程

Excel 名稱(Name)及其 VBA 中的使用詳細說明圖文教程

更新時間:2024-01-23 文章作者:未知 信息來源:網絡 閱讀次數:

Microsoft Excel是Microsoft為使用Windows和Apple Macintosh操作系統的電腦編寫的一款電子表格軟件。直觀的界面、出色的計算功能和圖表工具,再加上成功的市場營銷,使Excel成為最流行的個人計算機數據處理軟件。

在 Excel 的中名稱是一個使用很頻繁的東西,通過在?Excel?定義和使用名稱,可以更好的管理工作表數據,方便地編寫公式和設置表格。正如在工作表中定義和使用名稱一樣,在VBA中也可以創建和使用名稱,并能利用名稱處理工作表中的數據,這里我們就來具體的講一講Excel 名稱及其 VBA 中的使用。

一、認識和理解名稱

1、什么是名稱:

所謂名稱就是給單元格引用、常量、公式或者表格取一個有意義的名字,便于你了解和記憶這些對象,比如像下面的這些例子所表現的那樣:

Excel 名稱(Name)及其 VBA 中的使用詳解教程

??

2、名稱的類型:

Excel 的可以創建和使用名稱可以分為以下兩種類型

已定義的名稱:??代表單元格、單元格區域、公式或常量值的名稱。您可以創建自己的已定義名稱,有時 Excel 也會為您創建已定義名稱,例如當您設置打印區域時。

表名稱:??Excel 中表格的名稱,每次插入 Excel 表時,Excel 都會創建如 表1、表2 等默認 Excel 表名稱,如果有需要您也可以修改這些默認名稱。

3、名稱的有效范圍

名稱的適用范圍可以分為工作表級和工作簿級,其主要的區別如下:

工作表級(局部名稱):? 此類名稱的適用范圍為定義其的工作表。比如在 Sheet1 中定義一個名稱叫 "銷售",這個名稱在沒有限定的情況下只能在?Sheet1?中被識別,如果要在其他的表格中使用這個名稱,就必須在名稱前加上定義工作表的名字來限定他。比如:Sheet1!銷售

工作簿級(全局名稱): ?此類名稱的適用范圍為工作簿。工作簿中的所有工作表而言都可以識別并使用這個名稱。但其他的工作簿是不能識別和使用的。

注意: 名稱的名字在其的適用范圍必須是唯一的。但是你可以在不同的范圍定義名字相同的名稱,比如您可以為 Sheet1,?Sheet2和?Sheet3都定義一個名叫 "銷售" 的名稱。你甚至還可以定義一個工作簿級的名叫 "銷售" 名稱。但工作表和工作簿同時存在一個名字相同的名稱時就會導致名稱沖突。Excel 為解決此類沖突,默認情況下會使用工作表級的名稱,因為局部工作表級的名稱優先于全局工作簿級的名稱。如果要使用工作簿級的名稱的話,那就必須為此名稱添加前綴來消除歧義,比如:Book1!銷售

4、創建名稱

在 Excel 中一般可以通過三種方式來創建名稱,如下所述:

編輯欄上的 "名稱框": ?我們可以直接在“名稱框”中輸入名字來命名所選定的單元格或單元格區域,通常,在名稱框中顯示的是所在單元格的行號列標,單擊其右側的下拉箭頭,可以看到工作簿中的名稱列表:

Excel 名稱(Name)及其 VBA 中的使用詳解教程

?

根據所選內容創建: ?根據工作表中選定的單元格區域很方便的基于現有的行和列標簽來創建名稱:

Excel 名稱(Name)及其 VBA 中的使用詳解教程

??

使用“定義名稱”對話框: ?使用這種方式可以更加靈活的創建、編輯及使用名稱(例如指定局部工作表級別適用范圍或創建名稱批注),?在該對話框中,可以定義常量名稱和動態名稱:

Excel 名稱(Name)及其 VBA 中的使用詳解教程

??

5、輸入名稱

名稱主要通過以下幾種方式來輸入:

直接鍵入:? 直接在單元格等中輸入名稱。

使用?"公式記憶式鍵入" :??使用?"公式記憶式鍵入"?下拉列表,其中自動為您列出了有效名稱。

使用 "用于公式" 命令項: ?從“公式”選項卡“定義的名稱”組中“用于公式”菜單的下拉列表中選擇已定義名稱。

?

6、命名名稱注意事項

下面是創建和編輯名稱時需要注意的語法規則。

有效字符:??名稱中的第一個字符必須是字母、下劃線 (_) 或反斜杠 (\)。名稱中的其余字符可以是字母、數字、句點和下劃線。注意:?不能將字母“C”、“c”、“R”或“r”用作已定義名稱,因為當在“名稱”或“定位”文本框中輸入這些字母中的兩個時,會將它們用作為當前選定的單元格選擇行或列的簡略表示法。

不允許的單元格引用:??名稱不能與單元格引用(例如 Z$100 或 R1C1)相同。

空格無效:??不允許使用空格。請使用下劃線 (_) 和句點 (.) 作為單詞分隔符,例如 Sales_Tax 或 First.Quarter。

名稱長度:??一個名稱最多可以包含 255 個字符。

區分大小寫:??名稱可以包含大寫字母和小寫字母。Excel 在名稱中不區分大寫字符和小寫字符。例如,如果創建了名稱 Sales,接著又在同一工作簿中創建另一個名稱 SALES,則 Excel 會提示您選擇一個唯一的名稱

?

二、VBA 中對名稱的基本操作

??
1、?創建名稱

  • 可以使用下面的代碼在當前工作簿中創建名稱:
ActiveWorkbook.Names.Add Name:="MyName", RefersToR1C1:="=Sheet1!R2C2:R6C4"'或者ActiveWorkbook.Names.Add Name:="MyName", RefersTo:="=Sheet1!$B$2:$D$6"
?

上面的代碼在當前工作簿中將工作表Sheet1內的區域B2:D6命名為MyName,該名稱為全局名稱。在所命名的名稱中不能出現空格和單元格引用,并且,如果對命名區域使用A1樣式的引用,則最后使用絕對引用,否則所命名的區域將會不確定。

在所命名的名稱前加上工作表名,則創建局部名稱,如:

ActiveWorkbook.Names.Add Name:="Sheet1!MyName1", RefersTo:="=Sheet1!$B$2:$D$6"
上面的代碼在工作表Sheet1中命名區域B2:D6為MyName1,該名稱為局部名稱。
也通過引用指定工作表來創建局部名稱,如:
Worksheets("sheet2").Names.Add Name:="MyName2", RefersTo:="=Sheet2!$A$1:$B$3"
上面的代碼在工作表Sheet2中創建一個局部名稱MyName2,代表Sheet2中的單元格區域A1:B3。
  • 一種簡單的命名方法。例如:
Worksheets("Sheet1").Range("B8:C10").Name = "MyName3"
上面的代碼將工作表Sheet1中的單元格區域B8:C10命名為MyName3,為全局名稱。
Worksheets("Sheet2").Range("H15:G16").Name = "Sheet2!MyName4"
上面的代碼將工作表Sheet2中的單元格區域H15:G16命名為MyName4,為局部名稱。
注意,這種方法只能應用于命名單元格區域,不能夠用來命名公式、數字等。
  • 在當前工作表中命名局部區域,該區域為其它工作表中的單元格區域。
Worksheets("Sheet1").Range("E6:F8").Name = "Sheet2!MyName5"
或者:
Worksheets("sheet2").Names.Add Name:="MyName5", RefersTo:="=Sheet1!$E$6:$F$8"
上面的代碼在工作表Sheet2中命名工作表Sheet1中單元格區域E6:F8為MyName5,該名稱為Sheet2中的局部名稱。
  • 命名數字
Names.Add Name:="NameNumber", RefersTo:=666
將數字666命名為NameNumber
  • 命名字符串
Names.Add Name:="NameString", RefersTo:="TV"
將字符串TV命名為NameString。
  • 命名數組
Dim MyArray(10)Dim i As IntegerFor i = 1 To 10 MyArray(i) = iNext iNames.Add Name:="NameArray", RefersTo:=MyArray
上述代碼先對數組賦值,然后指定名稱。
  • 命名公式
Names.Add Name:="NameFormlas", RefersTo:="=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)"
上面的代碼命名了一個公式,可以用來創建動態表格或引用動態的區域。
使用上面的方法來命名數字、字符串、數組或公式存儲經常要使用的值,比將該值存放在單元格中更有優勢,它可以避免該值被易外修改并減少了對象的引用。

?

2、重命名已有的名稱

Worksheets("Sheet2").Names("MyName5").Name = "MyName6"
上面的代碼將工作表Sheet2中的局部名稱MyName5改名為MyName6。但這種方法只能在單元格或單元格區域中進行重命名使用,而不能重命名代表公式、數組和字符串的名稱。

?
3、改變所選區域所命名的名稱的引用區域

Worksheets(“Sheet1”).Names.Add Selection.Name.Name,Sheet1.Range(“B3:C4”)
上面的代碼將原來所選區域的名稱的引用區域改為單元格區域B3:C4,即該名稱所代表的區域已變為B3:C4,原來命名區域名稱被取消。

?
4、提取命名區域。

使用Evaluate方法,例如:代碼

Evaluate("MyName").Interior.ColorIndex = 3

Evaluate("MyName").Interior.ColorIndex = 3

將工作表中名稱MyName所代表的單元格區域的背景設置為紅色。

?

5、隱藏名稱

Names.Add Name:="HideName", RefersTo:="=$A$1:$C$3", Visible:=False

Names.Add Name:="HideName", RefersTo:="=$A$1:$C$3", Visible:=False

將隱藏所創建的名稱。注意,如果再創建的名稱與所隱藏的名稱相同,則被隱藏的名稱將被覆蓋。

?

6、刪除名稱

Names("MyName3").Delete

Names("MyName3").Delete

上面的代碼刪除當前工作簿中的名稱MyName3。

注意,當前工作簿中重命名已有名稱和刪除名稱時,要注意所要操作的名稱是全局名稱還是局部名稱。如果為局部名稱,則必須在代碼中加上該名稱所在工作表的引用。

三、VBA 中對名稱的使用實例

我們在第一部分了解和認識了名稱的初步概念,在第二部分又學習了 VBA 中名稱一些基本的操作,比如 添加和刪除等,下面我們用一些具體的例子來進一步學習 VBA 中名稱的運用

1、檢查當前工作簿中某名稱是否存在

Sub test()    Dim str As Boolean    str = NameExists("myName")    If str = True Then        MsgBox "該名稱存在于當前工作簿中."    Else        MsgBox "該名稱不存在."    End IfEnd Sub‘- - - - - - - - - - - - - - - - - - - - - Function NameExists(FindName As String) As Boolean    Dim rng As Range    Dim myName As String    On Error Resume Next    myName = ActiveWorkbook.Names(FindName).Name    If Err.Number = 0 Then NameExists = TrueEnd Function
或者:
Function NameExists(TheName As String) As Boolean    On Error Resume Next    NameExists = Len(ThisWorkbook.Names(TheName).Name) <> 0End Function
?
2、工作簿中的所有名稱可見
Sub UnHideName()    Dim Nm As Name    For Each Nm In Names        Nm.Visible = True    NextEnd Sub
?
3、列出當前工作簿中所有名稱的相關信息
Sub ShowNames()    Dim N As Integer    For N = 1 To ActiveWorkbook.Names.Count        On Error Resume Next        Cells(N, 1) = "'" & ActiveWorkbook.Names(N).Name        Cells(N, 2) = "'" & ActiveWorkbook.Names(N).RefersToRange.Address        Cells(N, 3) = "'" & ActiveWorkbook.Names(N).ShortcutKey        Cells(N, 4) = "'" & ActiveWorkbook.Names(N).Visible    NextEnd Sub
?
4、顯示當前單元格所命名的名稱
Sub ShowNames_activecell()    On Error Resume Next    MsgBox ActiveCell.Name.Name    Select Case Err.Number        Case 0        Case 1004            MsgBox "單元格" & ActiveCell.Address(4) & "沒有命名。"        Case Else            MsgBox Err.Number & " -- " & Err.Description    End SelectEnd Sub
示例說明:如果要獲取指定單元格所定義的名稱,可以使用Name屬性兩次。

?

5、刪除當前工作簿中含有“name”字符的名稱

Sub DeleteName()    Dim Nm As Name    For Each Nm In ActiveWorkbook.Names        If Nm.Name Like "*name*" Then Nm.Delete    Next NmEnd Sub
?
6、判斷某單元格或單元格區域是否與命名區域部分重疊
Function NameOfParentRange(Rng As Range) As String    Dim Nm As Name    For Each Nm In ThisWorkbook.Names        If Rng.Parent.Name = Nm.RefersToRange.Parent.Name Then            If Not Application.Intersect(Rng, Nm.RefersToRange) Is Nothing Then                NameOfParentRange = Nm.Name                Exit Function            End If        End If    Next Nm    NameOfParentRange = ""End Function
示例說明:如果Rng所代表的單元格或單元格區域與命名區域相交叉,則返回命名區域的名稱,否則返回空。

??

四、有關名稱的部分技巧

??

1、加大名稱框的寬度

在Excel工作表的名稱框中(如圖1所示),大約只能顯示16個字符,當超過它所能容納的字符時,后面的字符將會被截取,將不能看到完整的名稱,這對前面的字符相同而區別在最后幾個字符的名稱來說,很不方便,但是在Excel中沒有改變名稱框尺寸的設置。這可通過調用 Windows API 來解決,通過調用API來增加下拉框的寬度。在VBE編輯器中插入一個標準模塊,并輸入以下的代碼(代碼可用于 32 位和64位 Excel):

#If Win64 Then    Public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _        (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr    Public Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" _        (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, _         ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr    Public Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" _        (ByVal hwnd As LongPtr, ByVal wMsg As Long, _         ByVal wParam As LongPtr, lParam As Any) As LongPtr#Else    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long    Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _        (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _         ByVal lpsz1 As String, ByVal lpsz2 As String) As Long    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _        (ByVal hwnd As Long, ByVal wMsg As Long, _         ByVal wParam As Long, lParam As Any) As Long#End IfPublic Const CB_SETDROPPEDWIDTH = &H160Sub SetNameBoxDropWidth()    Const xWidth = 600 '這里設置為你需要的寬度    Call SendMessage( _                     FindWindowEx( _                         FindWindowEx( _                             FindWindow("XLMAIN", Application.Caption), _                         0, "EXCEL;", vbNullString), _                     0, "combobox", vbNullString), _                     CB_SETDROPPEDWIDTH, xWidth, 0)End Sub
?

效果如圖:

Excel 名稱(Name)及其 VBA 中的使用詳解教程

示例說明:上述代碼運行前后的結果如圖3和圖4所示。在上面的代碼中,可以通過改變常量 xWidth 的值來定義下拉框的寬度。

?

2、為名稱框定義快捷鍵

Excel提供的快捷鍵中沒有名稱框的快捷鍵。但是,您能使用VBA代碼設置快捷鍵,以方便能快速定位到名稱框。
在VBE編輯器中,插入一個標準模塊,并輸入以下代碼(代碼可用于 32 位和64位 Excel):

Excel 名稱(Name)及其 VBA 中的使用詳解教程

#If Win64 Then    Public Declare PtrSafe Function SetFocus Lib "user32" (ByVal hwnd As LongPtr) As LongPtr    Public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _        (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr    Public Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" _        (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, _         ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr#Else    Public Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long    Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _        (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _         ByVal lpsz1 As String, ByVal lpsz2 As String) As Long#End IfSub SetFocusNameBox()    Call SetFocus( _    FindWindowEx( _                 FindWindowEx( _                              FindWindow("XLMAIN", Application.Caption), _                 0, "EXCEL;", vbNullString), _    0, "combobox", vbNullString))End Sub
在Excel中,選擇“開發工具”選項卡 --> "組" -->?“宏”命令,調出“宏”對話框,為剛創建的SetFocusNameBox代碼指定快捷鍵,如Ctrl + Shift + O。那么,以后在該工作簿中,按下Ctrl + Shift +?O組合鍵,即可定位到名稱對話框。
Excel整體界面趨于平面化,顯得清新簡潔。流暢的動畫和平滑的過渡,帶來不同以往的使用體驗。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 桐庐县| 巴马| 大兴区| 沙洋县| 鄯善县| 五寨县| 永丰县| 绩溪县| 临江市| 大同县| 印江| 竹山县| 杭州市| 衡东县| 慈溪市| 光山县| 旅游| 阜阳市| 鹿邑县| 电白县| 博乐市| 海兴县| 枣庄市| 广宁县| 昂仁县| 涞源县| 松江区| 长泰县| 临沂市| 湘乡市| 张家界市| 武夷山市| 那坡县| 平定县| 衡南县| 井冈山市| 德清县| 无极县| 莱州市| 双辽市| 景泰县|