2017-09-21 36 views
-2

Excelのワークシートがキーボードの矢印の動きに反応しない、Excelの閉鎖ボタンが応答しないなどの異常な問題が発生します。VBAコード行があり、これらのコード行の最後にApplication.ScreenUpdating = True。今のところ、ワークシートを「アンフリーズ」するのに役立つのは、Application.ScreenUpdating = Trueという簡単な手順を手動で実行することだけです。検証の余分なレイヤーとして、VBAコードラインが単純で、操作性が100%向上した別のファイルを開いたところ、まったく同じ問題が発生しています。 私の唯一の疑念は、コードではなくExcel自体と関係があることです。誰も同じ問題を抱えていますか?ScreenupdatingがTrueに設定されていてもExcelワークシートの画面が更新されない

更新:これはコード関連ではないという証拠を提供するために、私はこのファイルを別のマシン上で再チェックし、すべて正常に動作します。私は今、この問題が自分のPCやExcel自体に関連していると確信しています...

+0

'For'と' Do While'ループの中で 'DoEvents'を使う – Moacir

+0

多くのことが原因でコードが"行をスキップ "することがあります。 If ... Thenステートメント、For ... Next w/Exit Forなど制限された情報で問題を診断することは困難です。その他の問題としては、エラー処理方法があります。 'On Error Resume Next'のようなものを使うのではなく、あなた自身のエラー処理を使うことをお勧めします。 –

+0

使用しているOfficeのバージョンは?ビデオディスプレイドライバを確認します。マイクロソフトはメーカーよりも優れたドライバを提供することがあります。ちょっとした考え。 – Mitch

答えて

1

DoEventsをコードに使用すると、Excelのコントロールを「元に戻す」ことができます。それは多分、Excelがフリーズする原因となるコード

For i = 1 to 99999999999 
'humongous code here 
Next i 

に例えば 。

For i = 1 to 99999999999 
DoEvents 
'humongous code here 
Next i 

この方法では、コードが実行される前に常にロックされます。

フィールドを編集できるため、コードの実行が中断され、不要な影響が発生することに注意してください。

timesincelastcheck = Now 
For i = 1 to 99999999999 
If Now - timesincelastcheck >= TimeValue("0:00:04") Then 
    DoEvents 
    timesincelastcheck = Now 
End If 
'humongous code here 
Next i 

4秒、最後のロック解除経過しているのであれば、それは唯一のロック解除を行います。

ただ、例えば、私は通常、次の操作を行います。

+0

投稿していただきありがとうございますが、これは質問に対する回答ではありません。私の質問で述べたように、うまく動作していたファイルが私の画面をもう更新してくれないので、私の問題はコード関連ではありません。 –

関連する問題