<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] > Thu Apr 29 2021 12:49:45 GMT+0800 (GMT+08:00) 自動化事件,其實就是自動觸發的宏(不需要手動執行),響應一些特定操作之后自動觸發執行。 ## 應用層 應用在工作表(Worksheet)上就用 `Application_SheetXXX`這些。 * Application_NewWorkbook(),創建新工作簿時做點什么 * Application_SheetActivate(Sh) ,工作表激活時做點什么 * Application_SheetBeforeDelete(Sh) , 工作表被刪除之前做點什么 * Application_SheetBeforeDoubleClick(Sh, rg, cancel) ,雙擊工作表之前做點什么 * Application_SheetBeforeRightClick(Sh, rg, cancel) ,鼠標右鍵點擊之前做點什么 * Application_SheetCalculate(Sh) ,工作表重新計算(按<kbd>F9</kbd>)時做點什么 * Application_SheetChange(Sh, rg),工作表發生變化時做點什么 * Application_SheetDeactivate(Sh),工作表失去激活狀態時做點什么 * Application_SheetFollowHyperlink(Sh, Target), * Application_SheetSelectionChange(Sh, Target),主要是響應單元格 Select() 動作(點選單元格),可以理解為被點時做點什么 > 我這里只是簡化描述,實際上跟我說的會有出入——因為事件是講究觸發時機的。具體大家可自行在開發文檔中細看。 ## 文件層 針對工作簿( Workbook )的: * Workbook_Activate(),激活工作簿時做點什么 * Workbook_AfterSave(Success),工作簿保存之后做點 * Workbook_BeforeClose(Cancel),工作簿關閉之前做點什么 * Workbook_BeforePrint(Cancel),打印之前做點什么 * Workbook_BeforeSave(SaveAsUI, Cancel),保存之前做點什么 * Workbook_Deactivate(),工作簿失去激活狀態時做點什么 * Workbook_NewChart(Ch),工作簿中插入Chart 對象時做點什么 * Workbook_NewSheet(Sh), 新增工作表時做點什么 * Workbook_Open(),工作簿打開時做點什么 * Workbook_SheetActivate(Sh),工作表激活時做點什么 > 我這里只是簡化描述,實際上跟我說的會有出入——因為事件是講究觸發時機的。具體大家可自行在開發文檔中細看。 ## 注意 這些事件幾乎時刻都在發生,你使用的時候要明白: 1. 有時候不是異步的,你部署在事件函數中的代碼執行完之后,事件才算結束。拿工作表激活事件來說,只有等你的代碼全部執行完,才能顯示工作表的內容。因此你可能會等待一段時間。多久取決于代碼執行完成的花費的時間。 2. 對于發生十分頻繁的事件,盡量少部署代碼,否則你可能永遠在等進度條的路上。比如 Application_SheetSelectionChange(Sh, Target) 事件,響應你的每一次點擊!!!點完都會跑一遍。 ## 使用方法 1. 不帶參數的事件,凡是觸發必執行。 2. 帶參數的事件,你可以根據參數返回值判斷如何執行(它的參數不是要你填充的,而是提供給你在內部用的) > 準確地說不是參數,而是回調 例子: ```js // 改成別的變量名(不用默認值)的情況 function Application_SheetSelectionChange(a, r) { Console.log(a.Name) Console.log(r.Address()) } // 去掉參數 function Application_SheetSelectionChange() { Console.log(123) } // 省略參數的 function Application_SheetSelectionChange(undefined,r) { Console.log(r.Address()) } ``` 你可以直接把處理邏輯部署在事件函數內部,也可以事先準備好,然后在事件函數內部使用: ```js function Application_SheetSelectionChange(undefined,r) { Range("A1").Value2 = r.Value } // 推薦另外定義后調用、執行 ↓ function _fn_changeA1(selectRange){ Range("A1").Value2 = selectRange.Value } function Application_SheetSelectionChange(undefined,r) { _fn_changeA1(r) // 因為你可能有很多事情要部署在這個事件中 // _fn_x() // _fn_xxx() // …… // 太混亂的話就不好打理了。 } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看