發表文章

目前顯示的是有「VBA」標籤的文章

EXCEL VBA Scriptlet.TypeLib Error GUID 365

轉貼:https://support.microsoft.com/zh-tw/help/4036837/run-time-error-70-permission-denied-generate-guid-with-office-vba 「 執行階段錯誤 70: 使用權限被拒 」 建立 GUID,以透過 Office VBA 時  電子郵件  列印 重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。如果您發現錯誤,並想要協助我們進行改善,請填寫本篇文章下方的問卷。 檢視原始英文文章: 4036837 重要 這篇文章包含示範如何以降低安全性設定,或關閉電腦上的安全性功能的資訊。您可以進行這些變更,來解決特定的問題。在進行這些變更之前,Microsoft 會建議您先評估在特定環境中實作此因應措施與相關聯的風險。如果您選擇實作此因應措施,採用任何其他的適當步驟,以協助保護您的系統。 狀況 當您執行 Visual Basic for Applications (VBA) 程式碼時,會呼叫 CreateObject("Scriptlet.TypeLib")。GUID 函式來建立 GUID,在 Microsoft Office 應用程式 (Word、 Excel,等等) 中您會收到下列錯誤訊息: Run-time error '70': Permission denied 如果已安裝下列的年 7 月 2017年安全性更新的 Office,就會發生這個問題: Office 2016 的安全性更新: 2017 年 7 月 11, Office 2013 的安全性更新: 2017 年 7 月 1...

VBA 針對Excel中無Time元件的替代方法

範例1: myTimer.rar 範例2: myTimer2.rar VBA 針對Excel中無Time元件的替代方法 我們有時候需要每隔一段時間就去執行一段程序,例如顯示時間。這時候要用到計時器,在VBA我們可以用SetTimer及KillTimer兩個API或用OnTime方法來做。 下面例子在作用中的工作表A1顯示現在時間 1.使用SetTimer、KillTimer Private Declare Function SetTimer Lib "user32" (ByVal hWnd As _                                                 Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _                                                 ByVal lpTimerFunc As Long) As Long Private Declare Function KillTimer Lib "user32" (ByVal hWnd As _   ...

VBA Replace-取代字串

VBA Replace-取代字串 此函數最常運用在將字串的空白清除。 函數: Replace(變數,目標字串,取代字串) 範例: Replace("取代字串 Replace 的用法," ","") 結果: 取代字串Replace的用法

VBA InStr-搜尋

VBA InStr-搜尋 此函數是用在搜尋變數中的值,並傳回該變數中的第幾個位置 函數: InStr(搜尋引數的起始,字串運算式,比對字串) 範例: Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP"    ' 被搜尋的字串。 SearchChar = "P"    ' 要尋找字串 "P"。 ' 從第四個字元開始,以 [文字比對] 的方式找起。傳回值為 6(小寫 p)。 ' 小寫 p 和大寫 P 在 [文字比對] 下是一樣的。 MyPos = Instr(4, SearchString, SearchChar, 1)    ' 從第一個字元開使,以 [二進位比對] 的方式找起。傳回值為 9(大寫 P)。 ' 小寫 p 和大寫 P 在 [二進位比對] 下是不一樣的。 MyPos = Instr(1, SearchString, SearchChar, 0) ' 預設的比對方式為 [二進位比對](最後一個引數可省略)。 MyPos = Instr(SearchString, SearchChar)    ' 傳回 9。 MyPos = Instr(1, SearchString, "W")    ' 傳回 0。

EXCEL VBA 亂數原理

<pre class="brush: vb;"> Sub Rand()  Range("F2:G65535").Clear    '清除儲存格  a = 7   '常數  b = 3   '常數  c = Sheet1.Range("B5")  '常數設定亂數之範圍  Stime = Now()   '開始時間  For i = 1 To c  '產生亂數的資料筆數       '-----此段判斷值是用來縮減最後一個亂數所計算出來的時間   If i = c Then    SumValue = (1 + c) * c / 2       For k = 2 To c + 1  '開始迴圈計算以出現所有值的總和     NowSumValue = NowSumValue + Cells(k, 6)    Next k       NowCount = Sheet1.Range("F65536").End(xlUp).Row + 1    Cells(NowCount, 6) = SumValue - NowSumValue '用總和值減掉目前以產生出來的值總和    Cells(NowCount, 7) = Now()  '寫入時間    Etime = Now()   '記錄最後一筆資料產生的時間    Exit For   End If   '-----此段判斷值是用來縮減最後一個亂數所計算出來的時間         NowC...

Excel 函數自己用VBA寫

= TimeDiff ( Stime , Etime ) ' 計算時間範圍差距 Function TimeDiff(STime As Date, ETime As Date) As String         'DateDiff 的 Interval表示     '--------------------------     'Interval   |   Explanation     '--------------------------     'yyyy       |   Year     'q          |   Quarter     'm          |   Month     'y          |   Day of year     'd          |   Day     'w          |   Weekday     'ww         |   Week  ...