5 人のユーザーと共有し、継続的に使用するワークブックがあります。約 1800 のレコードと 26 列のデータがあります。データは、VLOOKUPS、標準値の混合です。実行中のマクロが 3 つ、条件付き書式ルールが 2 つ、およびダンプデータを含む 5 つのシート (17K レコードと 40 列のデータを含むシート) があります。
必要のない余分な機能をすべて削除し、それらを標準のテキストに置き換えようとしましたが、違いはわかりません。
ワークブックは継続的にクラッシュします。ワークブックに触れずにクリックしただけでもフリーズし、再び使用できるようになるまでに最大 10 分かかる場合があります。また、かなりのリソースを消費し (CPU が 100% に急上昇することもあります)、保存すると 100% の CPU を使用することにも気付きました。
ワークブックを高速化する方法、または少なくともファイルのクラッシュを停止する方法について、いくつかのアイデアを持っている人はいますか? :)
Sheet1(Voice)で呼び出されます
Private Sub Worksheet_Change(ByVal Target As Range)
'43 = ok '41 = NOK
'check if change happened in column A
If Target.Column = 1 Then
'check if changed value is X
If Target.Value Like "*x*" Then
'add datestamp if it is
Cells(Target.Row, 43).Value = Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss")
Else
End If
If Target.Value Like "*NOK*" Then
Cells(Target.Row, 41).Value = Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss")
Else
End If
End If
End Sub
ThisWorkbook で呼び出される
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Set shtVO = Sheets("Voice")
endRowVO = shtVO.Range("J" & Rows.Count).End(xlUp).Row
For Row = 2 To endRowVO
If IsEmpty(shtVO.Cells(Row, 28).Value) = False Then
If shtVO.Cells(Row, 3).Value <> shtVO.Cells(Row, 28).Value Then
If shtVO.Cells(Row, 1).Value Like "*CheckDoneDate*" Then
Else
shtVO.Cells(Row, 1).Value = shtVO.Cells(Row, 1).Value + "CheckDoneDate"
End If
Else
If shtVO.Cells(Row, 3).Value = shtVO.Cells(Row, 28).Value Then
If shtVO.Cells(Row, 1).Value Like "*CheckDoneDate*" Then
shtVO.Cells(Row, 1) = Replace(shtVO.Cells(Row, 1), "CheckDoneDate", "")
End If
End If
End If
Else
If shtVO.Cells(Row, 1).Value Like "*CheckDoneDate*" Then
shtVO.Cells(Row, 1) = Replace(shtVO.Cells(Row, 1), "CheckDoneDate", "")
End If
End If
Next Row
End Sub
モジュール 1 として呼び出される
Sub DateNow()
ActiveCell.Value = Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss")
End Sub
Sub UpdateLinks()
'
' Update Links
'
'ActiveWorkbook.UpdateLink Name:="F:\VOICE.xlsm", Type:=xlExcelLinks
'ActiveWorkbook.CalculateFull
End Sub
現在のステータス:私の回答を読んでください。