<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] > Sun Apr 25 2021 19:08:31 GMT+0800 (GMT+08:00) 這里給大家說點表格宏中,Excel 和 WPS 表格之間的一些差別: ## 可部署宏位置差異 在 VBA for Excel 中,宏是可以在不同工作表中單獨定義的,即你可以在每個工作表里面部署宏。它們彼此之間獨立,你在 `Sheet1` 部署的宏就只會在 `Sheet1` 上生效,不會影響到其他工作表。 > 這里說的是那些不加全局、他表對象描述符的寫法,比如: > > ```VB > Range("A1") = 100 > ``` > > 這類不加工作表對象描述的寫法,它默認只會影響所在的工作表(在 ThisWorkbook 部署的除外),當然了,會不會影響到其他工作表取決于整個宏的邏輯。但默認地單獨部署到具體工作表的宏只能在其工作表上生效。 而 WPS JS宏 不一樣,它的宏是面對全局的。一個宏,如果你沒有在宏邏輯中聲明生效的范圍,則這個宏能在所有處于激活狀態的工作表上生效。而且 WPS 表格的 JS 宏不能給單個工作表單獨部署宏,它的宏是按工作簿劃分生效范圍的,即同一個工作簿文件下的宏可以適用于所有的工作表(如果你不限制的話),跨工作表不影響宏的執行權限,只有跨工作簿時執行權限才會受限。 > 在工作簿 A 部署的宏,在工作簿 B 上是看不到的(跨工作簿了)。 也就是說: 在 WPS 表格工作簿中寫的宏(沒有聲明具體的工作表對象),適用于這個工作簿下的全部工作表。 相比于 Excel ,宏的執行權限很大。因此,在 WPS 表格中部署宏要特別小心。 ## 模塊差異 1. Excel 中,宏可以部署到具體的工作表也可以部署 ThisWorkbook 以及模塊(mod)中。 ![](https://img.kancloud.cn/1b/52/1b522c73646fcc0ff12c4866c836cbf7_638x448.png) 2. WPS 表格的 JS 宏,只能部署到模塊(Module)中(權限和生效作用域與 Excel VBA工程的 `ThisWorkbook`、模塊相似) ![](https://img.kancloud.cn/fe/ed/feedde2ba10f15f1b283c33196952bac_422x357.png) > 其實,就宏的執行權限和生效范圍而言,與 Excel 相比,WPS 表格的 JS 宏相當于部署到了Excel的`ThisWorkbook` 和"模塊"層,權限和生效作用域很高。JS宏雖有多個 Module ,但形同虛設,JS宏的模塊(Module)作用域限制不像 VBA 那樣嚴格。 ## 用戶窗體模塊差異 WPS JS宏 畢竟才出來不久,用戶窗體這塊在編輯器中能看到也能建起來,但API文檔還沒看到,大家可以參照 Excel 中的用戶窗體部分的開發文檔。應該差別不大(整個功能設計、開發流程、對象及對象屬性、方法、事件方面大同小異),具體枚舉值可能會有所不同。總之,這一塊可能還要等一段時間吧,畢竟 MsgBox都還沒能正常獲取返回值呢。 > MsgBox,我試過,都是 undefined,知道怎么弄的話跟我講講。 ## 嚴格的分類和一切皆 "function" 的差異 在 VBA 中,有明確的 `Sub` 和 `Function` 的區分,以及加了 Private 命令便不會混入公式中。 但到了 WPS JS宏,便不會有這些區分了,不管是宏還是 UDF 都是 function,也沒有什么 Public 和 Private 之分(這可不是用了`var`就能解決的!)。 > UDF:用戶自定義函數(公式),可以在表格中用于公式。 反正,一切皆 function 之后,你得想辦法自己區分它們。 ## 總結 總的來說,相比于 VBA For Excel,WPS 表格 JS宏,沒有繁瑣的私有“鎖”,宏有更高的執行權限和生效作用域,JS宏有更高的靈活性,部署宏比較簡單、直接。但這也要求在寫宏時要更細心、執行宏的時候更謹慎。宏編寫者要: 1. 明確哪些宏是所有工作表都能用的;哪些是只針對某個工作表的。 2. 該加上對象描述符的,一定要加上。例如: `Range("A1")`盡量寫成 `Range("Sheet1!A1")`、`Worksheets.Item("Sheet1").Range("A1")`這類或者預先激活`Sheet1`,當然,方法很多,能指向具體對象即可,以避免不必要的麻煩。 3. 宏變多的時候,可能很混亂,能用多個 Module 的就盡量分開寫。能藏起來的函數都給它藏起來,函數名該分類、語義化處理的盡量做。該加注釋的也不要偷懶,就怕連自己都不知道某個function是干嘛用的……
                  <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>

                              哎呀哎呀视频在线观看