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

分享

Word VBA 學(xué)習(xí)交流(二)

 shuaixinerwei 2012-02-24

Word VBA 學(xué)習(xí)交流(二)  

2008-01-08 20:58:55|  分類: Office辦公軟件 |字號 訂閱

 

 

Word VBA 學(xué)習(xí)交流

一、通過錄制宏生成代碼

如果無法確定要使用的 Visual Basic 方法或?qū)傩裕纱蜷_宏錄制器并進(jìn)行手動操作。宏錄制器會將操作譯成 Visual Basic 代碼。錄制操作完成后,可根據(jù)需要修改代碼。例如,如果無法確定實(shí)現(xiàn)段落縮進(jìn)的屬性或方法,可執(zhí)行下列操作:

  1. 在“工具”菜單上,指向“宏”,然后單擊“錄制新宏”。
  2. 如果需要,可更改默認(rèn)的宏名稱,然后單擊“確定”啟動錄制器。
  3. 在“格式”菜單上,選定“段落”。
  4. 更改段落左縮進(jìn)的值,然后單擊“確定”。
  5. 單擊“停止錄制”工具欄上的“停止錄制”按鈕。
  6. 在“工具”菜單上,指向“宏”,然后單擊“宏”。
  7. 從步驟 2 中選擇宏的名稱,然后單擊“編輯”按鈕。

查看 Visual Basic 代碼來確定對應(yīng)于段落左縮進(jìn)的屬性(LeftIndent 屬性)。將插入點(diǎn)置于 LeftIndent 之中,并按 F1 或單擊“幫助”按鈕。在幫助主題中,可以查看示例以及支持 LeftIndent 屬性的對象(單擊“應(yīng)用于”)。

(從上面可以看出,錄制宏是我們認(rèn)識未知對象的很好方法之一,同時(shí),也知道我為什么要大家裝“金山詞霸”的原因!如果你這個(gè)單詞不認(rèn)識,你怎么知道他是“左縮進(jìn)”?當(dāng)然,也有方法:就是把這個(gè)值設(shè)為一個(gè)比較特殊的值,再打特殊值所對應(yīng)的屬性)

說明

錄制的宏使用 Selection 屬性返回 Selection 對象。例如,下列指令將所選段落縮進(jìn) 0.5 英寸。

Sub IndentParagraph()

    Selection.ParagraphFormat.LeftIndent = InchesToPoints(0.5)

End Sub

您也可以修改錄制的宏并與 Range 對象一起使用。

(我們在日常的使用中經(jīng)常注意到:在使用“本機(jī)上的模板”是的向?qū)Ь痛罅渴褂昧薙election對象,而不是Range對象!難道說微軟有更新層次的考慮?我想可能是Selection對象更穩(wěn)定,跨版本能力更強(qiáng)吧!)

二、修改錄制的 Visual Basic 宏

宏錄制器是查找所需的 Visual Basic 方法和屬性的非常方便的工具。如果不知道使用何種屬性或方法,可打開宏錄制器,手動執(zhí)行操作。宏錄制器會將操作譯為 Visual Basic 代碼。但錄制宏具有一些限制條件。您不能錄制下列內(nèi)容:

條件分支

變量指定

循環(huán)結(jié)構(gòu)

自定義用戶窗體

出錯(cuò)處理

用鼠標(biāo)選定的文字(必須使用組合鍵)

若要增強(qiáng)宏的功能,可能需要修改錄制到模塊中的代碼。

刪除 Selection 屬性

使用宏錄制器創(chuàng)建的宏取決于所選內(nèi)容。在大多數(shù)錄制的宏指令的開頭,可以看到“Selection”。錄制的宏使用 Selection 屬性返回 Selection 對象。

例如,下列示例將所選內(nèi)容移動至 Temp 書簽,并在書簽之后插入文字。

Sub Macro1()

    Selection.Goto What:=wdGotoBookmark, Name:="Temp"

    Selection.MoveRight Unit:=wdCharacter, Count:=1

    '相當(dāng)于選中后按一個(gè)鍵盤的右方向鍵

    Selection.TypeText Text:="New text"

End Sub

這個(gè)宏雖然可以完成任務(wù),但是有一些缺點(diǎn)。首先,如果文檔中沒有一個(gè)名為 Temp 的書簽,該宏將導(dǎo)致出錯(cuò)。其次,該宏可能不正確地移動所選內(nèi)容。修改這個(gè)宏,使其不再使用 Selection 對象,就可解決上述兩個(gè)問題。以下就是經(jīng)修改后的宏:

Sub MyMacro()

If ActiveDocument.Bookmarks.Exists("Temp") = True Then

    endloc = ActiveDocument.Bookmarks("Temp").End

    ActiveDocument.Range(Start:=endloc, _

        End:=endloc).InsertAfter "New text"

'_ 就是續(xù)行的意思

End If

End Sub

Exists 方法用于檢查是否存在名為 Temp 的書簽。如果找到該書簽,則用 End 屬性返回該書簽結(jié)束字符的位置。最后使用 Range 方法返回一個(gè)引用書簽結(jié)束位置的 Range 對象,以使用 InsertAfter 方法插入文字。有關(guān)定義 Range 對象的詳細(xì)信息,請參閱處理 Range 對象。

使用 With…End With

可使用 With…End With 結(jié)構(gòu)簡化引用相同對象的宏指令。例如,在文檔頂部添加標(biāo)題時(shí),將錄制下面的宏。

Sub Macro1()

    Selection.HomeKey Unit:=wdStory

    Selection.TypeText Text:="Title"

    Selection.ParagraphAlignment.Alignment = wdAlignParagraphCenter

End Sub

每個(gè)指令都使用 Selection 屬性返回一個(gè) Selection 對象??梢院喕@個(gè)宏,這樣只需使用一次 Selection 屬性。

Sub MyMacro()

    With Selection

        .HomeKey Unit:=wdStory

        .TypeText Text:="Title"

        '.ParagraphAlignment.Alignment = wdAlignParagraphCenter

        '上面那句是原幫助中的,但肯定是筆誤!微軟沒看出?!

        .ParagraphFormat.Alignment = wdAlignParagraphCenter

    End With

End Sub

不使用 Selection 對象也可以完成相同的任務(wù)。下面的宏在活動文檔的開頭使用 Range 對象來完成相同的任務(wù)。

Sub MyMacro()

    With ActiveDocument.Range(Start:=0, End:=0)

        .InsertAfter "Title"

       '.ParagraphAlignment.Alignment = wdAlignParagraphCenter

       '上面那句是原幫助中的,但肯定是筆誤!微軟沒看出?!

        .ParagraphFormat.Alignment = wdAlignParagraphCenter

    End With

End Sub

刪除不必要的屬性

如果錄制了一個(gè)關(guān)于在對話框中選擇選項(xiàng)的宏,即使只更改一個(gè)或兩個(gè)選項(xiàng),宏錄制器也會記錄該對話框中的所有選項(xiàng)的設(shè)置。如果不希望更改所有的選項(xiàng),可從錄制的宏中刪除不必要的屬性。下面錄制的宏包含“段落”對話框的一些選項(xiàng)(單擊“格式”菜單可顯示該對話框的所有信息)。

Sub Macro1()

    With Selection.ParagraphFormat

        .LeftIndent = InchesToPoints(0)   '左縮進(jìn)0英寸

        .RightIndent = InchesToPoints(0)  '右縮進(jìn)0英寸

        .SpaceBefore = 6  '段前距6磅

        .SpaceAfter = 6  '段后距6磅,下面不寫了!

        .LineSpacingRule = 0

        .Alignment = wdAlignParagraphLeft

        .WidowControl = True

        .KeepWithNext = False

        .KeepTogether = False

        .PageBreakBefore = False

        .NoLineNumber = False

        .Hyphenation = True

        .FirstLineIndent = InchesToPoints(0)

        .OutlineLevel = 10

    End With

End Sub

但是,如果只需更改段前和段后間距,可將宏更改為:

Sub MyMacro()

    With Selection.ParagraphFormat

        .SpaceBefore = 6

        .SpaceAfter = 6

    End With

End Sub

因?yàn)橹辉O(shè)置了較少的屬性,所以簡化后的宏運(yùn)行得更快。運(yùn)行結(jié)果只更改選定段落的段前和段后的間距,所有其他設(shè)置都沒有改變。(注意:如果你是一個(gè)喜歡亂動的人,還是要上面吧,但他的速度肯定沒有下面的快,但他的適合環(huán)境更大.更所謂"忠""孝"難兩全啊^-^)

刪除不必要的參數(shù)

當(dāng)宏錄制器記錄一個(gè)方法時(shí),會包含所有參數(shù)的值。打開名為 Test.doc 的文檔時(shí),錄制了下面的宏。所得到的宏包含 Open 方法的所有參數(shù)。

Sub Macro1()

    Documents.Open FileName:="C:\My Documents\Test.doc", _

        ConfirmConversions:= False, ReadOnly:=False, _

        AddToRecentFiles:=False, PasswordDocument:="", _

        PasswordTemplate:="", Revert:=False, _

        WritePasswordDocument:="", _

        WritePasswordTemplate:="", Format:=wdOpenFormatAuto

End Sub

可以從錄制的宏中刪除不需要的參數(shù)。例如,可以刪除所有設(shè)置為空字符串的參數(shù)(如 WritePasswordDocument:=""),如下所示。

Sub MyMacro()

    Documents.Open FileName:="C:\My Documents\Test.doc", _

        ConfirmConversions:= False, _

        ReadOnly:=False, AddToRecentFiles:=False, _

        Revert:=False, Format:=wdOpenFormatAuto

End Sub

三、自動運(yùn)行的宏

通過為一個(gè)宏賦予某個(gè)特殊的名稱,就可在執(zhí)行某項(xiàng)操作(例如啟動 Word 或打開文檔)時(shí)自動運(yùn)行宏。Word 將下列名稱識別為自動宏,或稱“auto”宏。

宏名

運(yùn)行條件

AutoExec

啟動 Word 或加載全局模板時(shí)

AutoNew

每次新建文檔時(shí)

AutoOpen

每次打開已有文檔時(shí)

AutoClose

每次關(guān)閉文檔時(shí)

AutoExit

退出 Word 或卸載全局模板時(shí)

當(dāng)以下條件之一為真時(shí),將識別代碼模塊中的自動宏。

  • 模塊在自動宏(如 AutoExec)之后命名,并且包含一個(gè)名為“Main”的過程。
  • 任何模塊中的過程在自動宏之后命名。

與其他宏一樣,自動宏也可以保存于 Normal 模板、其他模板或文檔中。要讓自動宏運(yùn)行,它必須位于活動文檔的 Normal 模板中,或活動文檔選用的模板中。

唯一例外的是 AutoExec 宏,它只有存儲于以下位置時(shí)才可自動運(yùn)行:Normal 模板、通過“模板和加載項(xiàng)”對話框全局加載的模板、或由“Startup”文件夾指定的文件夾中的全局模板。

在命名沖突的情況下(多個(gè)自動宏名相同),Word 將運(yùn)行上下文中最近的自動宏。例如,如果同時(shí)在文檔及其附加的模板中創(chuàng)建了 AutoClose 宏,則僅執(zhí)行文檔中的自動宏。如果在 Normal 模板中創(chuàng)建了 AutoNew 宏,只有當(dāng)文檔或其附加模板中沒有名為 AutoNew 的宏時(shí),該自動宏才能運(yùn)行。(筆者注:簡稱"就近原則"!)

注釋  按住 Shift 可以終止自動宏的運(yùn)行。例如,基于包含 AutoNew 宏的模板新建文檔時(shí),按住 Shift 可終止 AutoNew 宏的運(yùn)行。方法是:按住 Shift,單擊(“文件”菜單)“新建”對話框中的“確定”按鈕,并在顯示新文檔前持續(xù)按住 Shift。如果運(yùn)行一個(gè)宏時(shí)有可能觸發(fā)自動宏,(這種情況,我沒遇過!)可用下列指令終止自動宏的運(yùn)行:

WordBasic.DisableAutoMacros

四、修改 Word 命令

大多數(shù) Word 命令都可通過轉(zhuǎn)換為宏的方式對其進(jìn)行修改。例如,可修改“文件”菜單上的“打開”命令,使其不再顯示 Word 文檔文件列表(擴(kuò)展名為 .doc 的文件),而顯示當(dāng)前文件夾中的所有文件。

若要在“宏”對話框中顯示內(nèi)置 Word 命令列表,可在“宏的位置”框中選定“Word 命令”。顯示的命令列表中包含所有的菜單命令、工具欄命令或快捷鍵命令。菜單命令名稱以相關(guān)的菜單名稱開頭。例如,“文件”菜單中的“保存”命令顯示為“FileSave”。

方法是工具/宏/宏

通過將一個(gè)宏命名為與 Word 命令相同的名稱,就可用宏替代 Word 命令。例如,如果創(chuàng)建一個(gè)名為“FileSave”的宏,當(dāng)選擇“文件”菜單上的“保存”命令、單擊“保存”工具欄按鈕,或按“保存文件”快捷鍵時(shí),Word 將運(yùn)行該宏。

本示例介紹了修改 FileSave 命令的步驟。

  1. 在“工具”菜單上,指向“宏”,然后單擊“宏”。
  2. 在“宏的位置”框中,選擇“Word 命令”。
  3. 在“宏名”框中,選擇“FileSave”。
  4. 在“宏的位置”框中選擇一個(gè)模板或文檔以保存該宏。例如,選擇 Normal.dot(全局模板)可生成一個(gè)共用宏(即修改所有文檔的“FileSave”命令)。
  5. 單擊“創(chuàng)建”按鈕。

FileSave 宏顯示如下:

Sub FileSave()

'

' FileSave Macro

' Saves the active document or template

'

    ActiveDocument.Save

End Sub

可添加指令或刪除現(xiàn)有的 ActiveDocument.Save 指令。之后在運(yùn)行“FileSave”命令時(shí),新的 FileSave 宏將取代 word 命令。若要恢復(fù)“FileSave”原有的功能,需重新命名新的 FileSave 宏或?qū)⒅畡h除。

說明: 也可以創(chuàng)建與 Word 命令同名的代碼模塊(例如 FileSave)并包含名為 Main 的子程序,以此替換 Word 命令。

五、將文本插入文檔

使用 InsertAfter 或 InsertBefore 方法在 Selection 或 Range 對象之前或之后插入文字。下列示例在活動文檔的末尾插入文字。

Sub InsertTextAtEndOfDocument()

    ActiveDocument.Content.InsertAfter Text:=" The end."

End Sub

下列示例在所選內(nèi)容之前插入文字。

Sub AddTextBeforeSelection()

    Selection.InsertBefore Text:="new text "

End Sub

Range 對象或 Selection 對象在使用了 InsertBefore 或 InsertAfter 方法之后,會擴(kuò)展并包含新的文本。使用 Collapse 方法可以將 Selection 或 Range 折疊到開始或結(jié)束位置。

六、選定文檔中的文本

可使用 Select 方法選定文檔中的對象。Select 方法可用于多種對象,例如 Bookmark、Field、Range 和 Table 對象。下列示例選定活動文檔中的第一個(gè)表格。

Sub SelectTable()

    ActiveDocument.Tables(1).Select

End Sub

下列示例選定活動文檔中的第一個(gè)域。

Sub SelectField()

    ActiveDocument.Fields(1).Select

End Sub

下列示例選定活動文檔中的前四個(gè)段落。Range 方法用于創(chuàng)建一個(gè)引用前四個(gè)段落的 Range 對象,然后將 Select 方法應(yīng)用于 Range 對象。

Sub SelectRange()

    Dim rngParagraphs As Range

    Set rngParagraphs = ActiveDocument.Range( _

        Start:=ActiveDocument.Paragraphs(1).Range.Start, _

        End:=ActiveDocument.Paragraphs(4).Range.End)

    rngParagraphs.Select

End Sub

'

選定文檔中的文本:我覺得用處不大,原因就是為什么要選中呢?能操作就直接操作,不能的話,就選中吧(他可以說是沒辦法的辦法).

七、編輯文字

本主題包含與下列任務(wù)相關(guān)的 Visual Basic 示例:

  • 確定文本是否被選定
  • 折疊選定內(nèi)容或區(qū)域
  • 擴(kuò)展選定內(nèi)容或區(qū)域
  • 重新定義 Range 對象
  • 更改文本

有關(guān)其他編輯任務(wù)的信息和示例,請參閱下列主題:

從文檔返回文本

選定文檔中的文本

將文本插入文檔

修改文檔的某一部分

http://club./dispbbs.asp?boardID=23&ID=153805&page=1

摘題目:

怎樣用宏統(tǒng)計(jì)word文件中某一個(gè)漢字,例如“的”字出現(xiàn)的數(shù)量?

(可以這樣:新建一個(gè)文檔,輸入“=rand(50,50)”,再按回車(不包括雙引號“”),則產(chǎn)生了虛擬文本,在此虛擬文本中試驗(yàn))

方法有三:

Sub getfoundcount1()

    Dim a As Range, i%

    Dim c, d

   

    c = Timer   '設(shè)C為運(yùn)行前的時(shí)間

    For Each a In ActiveDocument.Characters   '在字符間循環(huán)

        If a Like "的" Then    '如果是“的”

             i = i + 1   '則加上,i的初始值是0,不用設(shè)的,默認(rèn)

         End If

    Next

    d = Timer – c   '用現(xiàn)在的時(shí)間減去運(yùn)行前的時(shí)間等于用時(shí)

   

    MsgBox "Word 找到" & i & "個(gè)與此條件相匹配的項(xiàng)!", vbInformation, d

End Sub

'上面此法利用循環(huán)比較字符是否是的是“的”字,來判斷!用時(shí)下面的圖形的標(biāo)題欄

圖表 1

Sub GetFoundCount2()

    Dim FoundCount As Integer, myFindText As String

    Dim a, b

    a = Timer

    myFindText = "的"

    With ActiveDocument.Content.Find

        .Text = myFindText   '要查找的字符

        .MatchWildcards = False    '通配符為不勾選

        .Wrap = wdFindStop   '當(dāng)查找到后停止,就是每次縮小范圍

        Do While .Execute    '當(dāng)查找時(shí)則累加

            FoundCount = FoundCount + 1

        Loop

    End With

    b = Timer - a

    Debug.Print b

    Debug.Print FoundCount

    MsgBox "Word 找到" & FoundCount & "個(gè)與此條件相匹配的項(xiàng)!", vbInformation, b

End Sub

'上面是標(biāo)準(zhǔn)的用查找來判斷累加,(也是老大的代碼)

圖表 2

Sub getfoundcount3()

Dim a, b, c, d, e, f

    d = Timer

    a = ActiveDocument.Range.Text

    f = VBA.Asc("的")  '取得“的”的Ascii碼

    b = Split(a, Chr(f))   '用此Ascii碼來分裂

    c = UBound(b)   '取得上限

    e = Timer – d   '取得時(shí)間

    Debug.Print e   '這個(gè)是輸出到調(diào)試區(qū)的

    Debug.Print c   '這個(gè)也是

    MsgBox "Word 找到" & c & "個(gè)與此條件相匹配的項(xiàng)!", vbInformation, e

End Sub

'上面是利用數(shù)組,把“的”看成是用于split數(shù)組的字符,通過是判斷數(shù)組的上限來判斷是幾位數(shù)組,即是幾個(gè)“的”。

圖表 3

Sub GetFoundCount4()

    Dim strText As String, myText As String

    Dim lngOld As Long, lngNew As Long

    Dim Times As Single

    Times = VBA.Timer

    strText = ActiveDocument.Content.Text

    myText = "的"

    lngOld = Len(strText)  '包括“的”的長度

    lngNew = Len(Replace(strText, myText, ""))  '替換“的”后的長度

    MsgBox "Word 找到" & lngOld - lngNew & "個(gè)與此條件相匹配的項(xiàng)!", vbInformation, VBA.Timer - Times

End Sub

圖表 4

       (上面是老大又寫了一個(gè),老大隨后的代碼的運(yùn)行速度更是十分驚人)

 

兩種方法運(yùn)行最高。

一個(gè)是0.1秒與一個(gè)是6秒,效率是可想而知!大家試試!

十、從文檔返回文本

使用 Text 屬性可以返回 Range 或 Selection 對象中的文本。下列示例選定下一個(gè)格式設(shè)為“標(biāo)題 1”樣式的段落。然后通過 MsgBox 函數(shù)顯示 Text 屬性的內(nèi)容。

Sub FindHeadingStyle()

    With Selection.Find

        .ClearFormatting

        .Style = wdStyleHeading1

        .Execute FindText:="", Format:=True, _

            Forward:=True, Wrap:=wdFindStop

        If .Found = True Then MsgBox Selection.Text

    End With

End Sub

下列指令返回并顯示選定的文本。

Sub ShowSelection()

    Dim strText As String

    strText = Selection.Text

    MsgBox strText

End Sub

下列示例返回活動文檔中的第一個(gè)單詞。Words 集合中的每一項(xiàng)是代表一個(gè)單詞的 Range 對象。

Sub ShowFirstWord()

    Dim strFirstWord As String

    strFirstWord = ActiveDocument.Words(1).Text

    MsgBox strFirstWord

End Sub

下列示例返回與活動文檔中第一個(gè)書簽相關(guān)聯(lián)的文本。

Sub ShowFirstBookmark()

    Dim strBookmark As String

    If ActiveDocument.Bookmarks.Count > 0 Then

        strBookmark = ActiveDocument.Bookmarks(1).Range.Text

        MsgBox strBookmark

    End If

End Sub

 

InputBox 函數(shù)

在一對話框來中顯示提示,等待用戶輸入正文或按下按鈕,并返回包含文本框內(nèi)容的 String。

語法

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

InputBox 函數(shù)的語法具有以下幾個(gè)命名參數(shù):

部分

描述

Prompt

必需的。作為對話框消息出現(xiàn)的字符串表達(dá)式。prompt 的最大長度大約是 1024 個(gè)字符,由所用字符的寬度決定。如果 prompt 包含多個(gè)行,則可在各行之間用回車符 (Chr(13))、換行符 (Chr(10)) 或回車換行符的組合 (Chr(13) & Chr(10)) 來分隔。

Title

可選的。顯示對話框標(biāo)題欄中的字符串表達(dá)式。如果省略 title,則把應(yīng)用程序名放入標(biāo)題欄中。

Default

可選的。顯示文本框中的字符串表達(dá)式,在沒有其它輸入時(shí)作為缺省值。如果省略 default,則文本框?yàn)榭铡?/P>

Xpos

可選的。數(shù)值表達(dá)式,成對出現(xiàn),指定對話框的左邊與屏幕左邊的水平距離。如果省略 xpos,則對話框會在水平方向居中。

Ypos

可選的。數(shù)值表達(dá)式,成對出現(xiàn),指定對話框的上邊與屏幕上邊的距離。如果省略 ypos,則對話框被放置在屏幕垂直方向距下邊大約三分之一的位置。

Helpfile

可選的。字符串表達(dá)式,識別幫助文件,用該文件為對話框提供上下文相關(guān)的幫助。如果已提供 helpfile,則也必須提供 context。

Context

可選的。數(shù)值表達(dá)式,由幫助文件的作者指定給某個(gè)幫助主題的幫助上下文編號。如果已提供 context,則也必須要提供 helpfile。

 

說明:如果同時(shí)提供了 helpfilecontext,用戶可以按 F1 (Windows) or HELP (Macintosh) 來查看與 context 相應(yīng)的幫助主題。某些主應(yīng)用程序,例如,Microsoft Excel,會在對話框中自動添加一個(gè) Help 按鈕。如果用戶單擊 OK 或按下ENTER ,則 InputBox 函數(shù)返回文本框中的內(nèi)容。如果用戶單擊 Cancel,則此函數(shù)返回一個(gè)長度為零的字符串 ("")。

注意 如果還要指定第一個(gè)命名參數(shù)以外的參數(shù),則必須在表達(dá)式中使用 InputBox。如果要省略某些位置參數(shù),則必須加入相應(yīng)的逗號分界符。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多