iT邦幫忙

0

請教 Excel 及 VBA 執行中,如何偵測當時是在『自動計算』或『手動計算』狀態下?

  • 分享至 

  • xImage

因為使用者可能在『自動計算』或『手動計算』狀態下,所以要請教 Excel VBA 高手,如何在Excel 中,能偵測當時狀態,以便顯示讓使用者知道(非執行VBA時) 及在 VBA 執行中,能判斷當時狀態,以便視狀況需要,改變當時狀態。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

8
蟹老闆
iT邦大師 1 級 ‧ 2013-03-28 13:26:08
最佳解答

將以下程式碼放在ThisWorkbook物件裡

<pre class="c" name="code">
Private Sub Workbook_Open()
    Call Dream
End Sub

另外要新增一個模組

<pre class="c" name="code">
Sub Dream()
   Select Case Application.Calculation
        Case -4135
            MsgBox "目前設定狀能為[手動]"
        Case -4105
            MsgBox "目前設定狀能為[自動]"
    End Select
End Sub

前提是必須將EXCEL安全性設為中或低,這樣一開檔就可以知道目前的狀態,若要在其它程式碼使用它再呼叫它來判斷就可以了。

感謝dream大大的精闢的答覆,但想再請教:

1.若想在某一儲存格內,隨時顯示當時狀態為手動或自動(因為有些User 可能自己到工具-選項修改),則有辦法將偵測到訊息代號寫入儲存格嗎?

  1. 4135 等回應訊息代號,請教到那裏可以查到?

Tks a lot !

蟹老闆 iT邦大師 1 級 ‧ 2013-03-30 12:55:18 檢舉
<pre class="c" name="code">
Sub Dream()  
   Select Case Application.Calculation  
        Case -4135  
            MsgBox "目前設定狀能為[手動]"  
        Case -4105  
            MsgBox "目前設定狀能為[自動]"  
    End Select  
End Sub

1.若要寫入工作表可以把MsgBOX "XXXXXXXXX" 替換成 Sheets("Sheet1").Range("A1").Value = Application.Calculation
這樣會將得到的值寫入Sheet1的A1儲存格裡
2.請參考hondaithome大的解答

4
hondaithome
iT邦新手 5 級 ‧ 2013-03-30 12:35:08

Dear hondaithome大大:

感謝您的熱心解答。

Tks a lot!

john

我要發表回答

立即登入回答