私のExcelプロジェクトの1つでは、過去25分間にブックが保存されていない場合、ユーザーに何らかのアクション(MsgBox
)を求めるプロンプトが表示されます。Excelバグメッセージボックスの出力がセルに書き込まれます
このメソッドは、Application.OnTime
を呼び出して次のアラートをスケジュールし、一度保存すると再スケジュールされます。
今日、メッセージボックスの内容(および「Microsoft Excel」の追加テキスト&「OK」)がワークシートに印刷され、セルの内容が上書きされるというバグがありました。
ユーザーによれば、マクロはバックグラウンドで実行されておらず、実行される唯一のアクションはワークシート間の切り替えでした。これらのシートにはイベントトリガコードはありません。
私はOnTime
でしたが、安全な方法でしたが、バグが私を驚かせました。
私はいくつかの研究を行って、この問題に関するドキュメントを探していましたが、できませんでした。私はそれが生涯に一度起こるかもしれない低いprobイベントでなければならないと信じています。
私はこのコードを保存するか、またはそれを消去する必要があるかについてのコメントはありますか?
事前に感謝します。
"EDIT 1からOnTime
機能によって呼び出される追加のコード
Public Sub NeedToBeSaved()
' ======================================================================
' Description : Periodically checks if the workbook needs to be saved.
'
' Comments : AfterSave method takes care of scheduling new check.
' Refresh it only if user has not saved
' ======================================================================
Dim nme As Name
Dim dteLastSaved As Date
Set nme = ThisWorkbook.Names(gsRNGNAME_LASTSAVED)
dteLastSaved = Mid$(nme.value, 2)
' Debug Log
' ---------
Debug.Print "----------------------"
Debug.Print "Saving Periodic Check"
Debug.Print "----------------------"
Debug.Print "Worbook is saved:" & vbTab & ThisWorkbook.saved
Debug.Print "Last time :" & vbTab & dteLastSaved
If (ThisWorkbook.saved = False) Then
MsgBox "File has not been saved in the last " & glAPP_SAVED_FREQ & _
" minutes, please consider saving your changes. " & _
vbCrLf & "(To prevent this message open in read-only mode)"
Call SaveOnTimeCheck
Else
Debug.Print "Not rescheduled"
End If
End Sub
チャーリー - あなたはquesitonを編集し、 'OnTime'呼び出しでコードを含める必要があります。 –
"セルの内容を上書きする" - セルの内容が画面上で隠されたり上書きされたり、実際のセルの内容が変更されたことを意味しますか? –
私はgimme a secを使用しているコードを追加するつもりです。 問題は、メッセージボックスに出力する文字列によって実際のセルの内容が変更されたことです。 – Charlie