<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    superwei

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    提升效率

    公式
    (暫無)



    VBA

    1:更快的篩選符合條件的紀錄方法,參看這段代碼:

    With xSheet.Range(myRange)                ' select range
        Set c = .Find("My Key Word")            ', LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            do
                lineno2 = c.Row()                     ' get row number
                ....                                            ' process business logic
                'Find next line
                Set c = .FindNext(c)
                If c Is Nothing Then Exit Do
            Loop While c.Address <> firstAddress
        End if
    End With

     

    有了這一段代碼,可以飛快地從這個Sheet當中,把所有符合自己所要求的(上例中是My Key Word)行選出來。再也不需要逐行掃描,逐個比對是否滿足條件了: 讀入的速度快了無數倍


    2:寫入

    參看以下代碼:

        Dim myRange As Range
        Dim strResultArray(1 to 1000, 1 to 13) as String        ' saved result from input to write out
        Set myRange = rSheet.Range("A1:M1000")
        myRange = strResultArray
        Set myRange = Nothing

    屬于區域式整體賦值,而不是一個單元格,一個單元格的賦值


    3:盡量使用VBA原有的屬性、方法和WORKSHEET函數

    求平均工資的例子:

    for each c in worksheet(1).range(“a1:a100”)

         totalvalue=totalvalue+c.value

    next

    averagevalue=totalvalue/worksheet(1).range(“a1:a1000”).rows.count

    而下面的代碼程序比上面的例子快得多

    averagevalue=application.worksheetfunction.average(worksheets(1).range(“a1:a1000”))


    4:盡量減少使用對象引用,尤其在循環中

    1、使用With語句

    例:workbooks(1).sheets(1).range(“a1:a1000”).font.name=”pay”

    workbooks(1).sheets(1).range(“a1:a1000”).font.fontstyle=”bold”

    而下面的代碼程序比上面的例子快得多

    With workbooks(1).sheets(1).range(“a1:a1000”).font

    .name=”pay”

    .fontstyle=”bold”

    end with

    2、使用對象變量。

    如果你發現一個對象引用被多次使用,則你可以將此對象用SET設置為對象變量,以減少對對象的訪問。如:

    workbooks(1).sheets(1).range(“a1”).value=100

    workbooks(1).sheets(1).range(“a2”).value=200

    而下面的代碼程序比上面的例子快得多

    Set mysheet=workbooks(1).sheets(1)

    Mysheet. range(“a1”).value=100

    Mysheet.range(“a2”).value=200

    3、在循環中要盡量減少對象的訪問。

    For k=1 to 1000

    Sheets(“sheet1”).select

    Cells(k,1).value=cells(1,1).value

    Next k

    Set thevalue =cells(1,1).value

    Sheets(“sheet1”).select

    For k=1 to 1000

    Cells(k,1).value=thevalue

    Next k


    5:減少對象的激活和選擇

    如果你是通過錄制宏學習VBA的,則你的程式序里一一充滿了對象的激活和選擇,如WORKSHEETS(XXX).ACTIVATE、Sheets(XXX).select等.但事實上大多數的情況下這些操作是不必須的.例如:

    sheets(“sheet3”).select

    range(“a1”).value=100

    range(“a2”).value=200

    可改為

    with sheets(“sheet3”)

    .range(“a1”).value=100

    .range(“a2”).value=200

    end with


    6:關閉屏幕更新

    如果前面三條做的比較差,則關閉屏幕更新是提高VBA程序運行速度的最有效方法,縮短運行時間2/3左右。關閉屏幕更新的方法:

    Application.screenupdate=false

    請不要忘記VBA程序運行結束時再將該值設回來

    Application.screenupdate=true


    posted on 2015-10-09 11:48 小辭猬 閱讀(160) 評論(0)  編輯  收藏 所屬分類: VBA

    主站蜘蛛池模板: 亚洲丝袜中文字幕| 亚洲国产另类久久久精品| 亚洲资源在线视频| 国产一区二区免费视频| 亚洲欧洲∨国产一区二区三区 | 亚洲日韩欧洲无码av夜夜摸| 一区二区三区视频免费| 激情97综合亚洲色婷婷五| 国产精品成人啪精品视频免费| 亚洲一级特黄大片无码毛片| 国产无遮挡色视频免费观看性色 | 啊v在线免费观看| 黄色毛片视频免费| 久久精品国产精品亚洲人人| 免费看黄的成人APP| 亚洲国产老鸭窝一区二区三区| 日本免费高清视频| 久久精品国产亚洲av麻豆蜜芽| 国产精品久久久久久久久久免费| 亚洲欧洲国产综合AV无码久久| 亚洲av成人一区二区三区在线观看| 久久久久久av无码免费看大片| 亚洲AV无码一区二区二三区软件| 最近中文字幕大全免费视频| 亚洲成a人片7777| 日本免费人成视频播放| 国产一级a毛一级a看免费视频| 久久久亚洲欧洲日产国码二区| 国内大片在线免费看| 美女黄频免费网站| 亚洲AV成人片色在线观看| 亚洲无砖砖区免费| 色婷婷六月亚洲综合香蕉| 久久激情亚洲精品无码?V| 国产91色综合久久免费| 日韩色日韩视频亚洲网站| 久久久久久亚洲av成人无码国产| 18禁成年无码免费网站无遮挡| 特级毛片在线大全免费播放| 亚洲精品视频免费看| 国产色爽免费视频|