<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

    主站蜘蛛池模板: 一级毛片a免费播放王色电影| 免费看少妇高潮成人片| 成人性做爰aaa片免费看| 99久久免费国产精品热| 91免费播放人人爽人人快乐| 青春禁区视频在线观看直播免费| 韩国欧洲一级毛片免费 | 国产在线观看无码免费视频| 亚洲视频免费在线观看| 国产在线a免费观看| 亚洲真人无码永久在线| 亚洲人成在久久综合网站| 51午夜精品免费视频| 黄瓜视频影院在线观看免费| 午夜亚洲福利在线老司机| 亚洲精品国产专区91在线| 色网站在线免费观看| 麻豆视频免费观看| 国外亚洲成AV人片在线观看| 亚洲久悠悠色悠在线播放| 中文在线观看国语高清免费| 性xxxx视频播放免费| 亚洲永久中文字幕在线| 国产免费播放一区二区| 成在线人永久免费视频播放| 亚洲国产超清无码专区| 无码精品一区二区三区免费视频 | 99久久免费国产特黄| 亚洲XX00视频| 爱情岛论坛亚洲品质自拍视频网站 | 456亚洲人成影院在线观| 国内精品久久久久影院免费| 国产精品亚洲mnbav网站 | 成人A毛片免费观看网站| 国产网站免费观看| 狼人大香伊蕉国产WWW亚洲 | 在线A级毛片无码免费真人| 亚洲视频一区网站| 91频在线观看免费大全| 九九精品国产亚洲AV日韩| 国产精品国产午夜免费福利看|