superwei

          導(dǎo)航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統(tǒng)計

          常用鏈接

          留言簿(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)行選出來。再也不需要逐行掃描,逐個比對是否滿足條件了: 讀入的速度快了無數(shù)倍


          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

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


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

          求平均工資的例子:

          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:盡量減少使用對象引用,尤其在循環(huán)中

          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、使用對象變量。

          如果你發(fā)現(xiàn)一個對象引用被多次使用,則你可以將此對象用SET設(shè)置為對象變量,以減少對對象的訪問。如:

          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、在循環(huán)中要盡量減少對象的訪問。

          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:減少對象的激活和選擇

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

          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:關(guān)閉屏幕更新

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

          Application.screenupdate=false

          請不要忘記VBA程序運行結(jié)束時再將該值設(shè)回來

          Application.screenupdate=true


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

          主站蜘蛛池模板: 安徽省| 青神县| 察雅县| 剑阁县| 綦江县| 盘山县| 顺义区| 北流市| 永清县| 保康县| 聂拉木县| 教育| 张家口市| 大同市| 叶城县| 龙井市| 枣强县| 石泉县| 雅江县| 宝应县| 彰武县| 马尔康县| 长垣县| 盐津县| 鄢陵县| 疏勒县| 南京市| 秦安县| 尚志市| 五指山市| 太谷县| 确山县| 九龙坡区| 泽普县| 宁晋县| 河源市| 化州市| 常德市| 广昌县| 焦作市| 仙游县|