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

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

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

    superwei

    導航

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統計

    常用鏈接

    留言簿(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 小辭猬 閱讀(167) 評論(0)  編輯  收藏 所屬分類: VBA

    主站蜘蛛池模板: 羞羞视频免费网站入口| 亚洲国产日韩视频观看| 国产亚洲精品国产福利在线观看| 免费国产作爱视频网站| 亚洲黄色网站视频| 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 免费精品国产自产拍观看| 一本色道久久88—综合亚洲精品| 18女人毛片水真多免费| 亚洲国产精品一区二区久| 国产精品怡红院永久免费| 亚洲香蕉久久一区二区| 成人无遮挡毛片免费看| 亚洲精品国产高清在线观看| 成全高清视频免费观看| 色天使色婷婷在线影院亚洲| 免费99热在线观看| 丝袜足液精子免费视频| 亚洲一区二区影院| 91在线品视觉盛宴免费| 亚洲av日韩综合一区久热| 亚洲精品国产自在久久| 国产真人无码作爱免费视频| 亚洲视频一区在线播放| 好吊妞视频免费视频| 七次郎成人免费线路视频 | 亚洲黄色免费在线观看| 亚洲中文字幕久久久一区| 国产成人精品男人免费| 和老外3p爽粗大免费视频| 亚洲综合一区二区| 国产男女猛烈无遮挡免费网站| 国产免费久久久久久无码| 亚洲第一网站免费视频| 精品国产一区二区三区免费看| 一区二区三区免费视频网站| 亚洲精品中文字幕麻豆| 国产免费69成人精品视频| 国产高清不卡免费视频| 亚洲成av人片天堂网无码】| 亚洲国产精品国自产拍AV|