|
▼ハチ さん:
こんばんわ
古いスレを引っ張り出してすみません。
その後何か分かったことありますか?
私もちょっと気になっていたので・・・
参考にもなりませんが、その時私が検証用に使用していたコードです。
とりあえず、手動の上書き保存とコードからの上書き保存(Book_Save)との
挙動の違いを見るために簡素化してみました。
******************************************************************************************
'標準モジュール
Sub Book_Save()
ThisWorkbook.Save
End Sub
Function Set_OnTime()
MsgBox "Set_OnTime"
Application.OnTime Now() + TimeValue("00:00:01"), "Exe_OnTime"
End Function
Function Exe_OnTime()
MsgBox "Exe_OnTime"
End Function
'ThisWorkBookモジュール
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call Set_OnTime
End Sub
で、コード→イベント発生→プロシージャ呼び出し→OnTime
の手順のどこかが悪いのかもと考えてSaveの代わりにSelectでやってみました。
******************************************************************************************
'標準モジュール
Sub Cell_Select()
Range("A1").Select
End Sub
Function Set_OnTime()
MsgBox "Set_OnTime"
Application.OnTime Now() + TimeValue("00:00:01"), "Exe_OnTime"
End Function
Function Exe_OnTime()
MsgBox "Exe_OnTime"
End Function
'ThisWorkBookモジュール
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Call Set_OnTime
End Sub
Selectでは正常なようです^^
なので、今度はApplicationオブジェクトまわりかも?と思い
簡単にチェックできそうなものを並べてみました。
******************************************************************************************
'標準モジュール
Sub Book_Save()
ThisWorkbook.Save
End Sub
Function Set_OnTime()
MsgBox "Set_OnTime"
tm = Now() + TimeValue("00:00:01")
With Application
.OnTime tm, "Exe_OnTime"
.StatusBar = "次回チェック:" & tm
.Dialogs(xlDialogProperties).Show
.DisplayFormulaBar = Not .DisplayFormulaBar
.ActiveCell = "次回チェック:" & tm
.CommandBars("Formatting").Visible = Not .CommandBars("Formatting").Visible
End With
End Function
Function Exe_OnTime()
MsgBox "Exe_OnTime"
End Function
'ThisWorkBookモジュール
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call Set_OnTime
End Sub
特に気になったのが、似たような設定動作で、コードから.Saveした時
.CommandBars("Formatting").Visible = Not .CommandBars("Formatting").Visible
は動作するのに
.DisplayFormulaBar = Not .DisplayFormulaBar
は動作しないということです。
これはシートで設定する時、「表示(V)」直下にあるものと「表示(V)」ー「ツールバー(T)」
の階層化にあるものとの違いが関係ある?
以前、
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=38873;id=excel
こういうのがあったので、手動で上書き保存するのとコードから.Saveするのとでは
処理方法が違うのかもしれません。(この辺のことが影響ありそうな・・・)
結局何も分かりません、駄レス失礼しましたm(__)m
|
|