1

Excel 2010では、以下で説明する方法で、ScreenUpdatingが正しく機能します。しかし、2007年には、それは反転せず、ワークシートの操作が視覚的に表示されています。

VBAの使用法:

Dim scrup As Boolean: scrup = DisableScreenUpdating(Application.ScreenUpdating)

メソッド宣言:

Function DisableScreenUpdating(val As Boolean) As Boolean
   '''''''''''''''''''''''''''''''''''''''''''''''''
   ' Disable ScreenUpdating, for seemless operation
   If val Then
      Application.ScreenUpdating = False
   End If
   '''''''''''''''''''''''''''''''''''''''''''''''''

   DisableScreenUpdating = val
End Function

質問:

2010年が想定している、または正しく機能している2007年に何が欠けていますか?

  • バグを追跡し続けると、ファイルの1つのバージョンで発生しますが、他の2つのバージョンでは発生しません。バージョンはすべて同じコードベースを持っていますが、さまざまな設定に基づいて、エンドユーザーへの表現を変更します。

ノート:

  • 「なぜ私がこれをしているのか」に焦点を当てないでください。また、ScreenUpdatingメソッドがからに変更されない原因となる状況について詳しく説明しTrueFalseください。
4

3 に答える 3

1

条件付きを削除して、問題がまだ残っているかどうかを確認してみてください。そうすれば、条件付きかどうか、または「val」と関係があるかどうかを知ることができます。

Function DisableScreenUpdating() As Boolean
  Application.ScreenUpdating = False
  DisableScreenUpdating = True
End Function

これでバグがなくなると仮定して、電話に集中します。

DisableScreenUpdating(Application.ScreenUpdating)

おそらく、ScreenUpdatingプロパティの読み取りに関係するバグであり、すぐに書き込みが続きます。しかし、それは単なる推測です。

また、Application.ScreenUpdatingの他の使用法についてプロジェクトを検索します。更新をTrueに戻す他のコードが存在する可能性があります。

于 2012-10-22T20:44:42.813 に答える
0

一つには、ScreenUpdatingを有効にする機能はありますか?あなたのコードはそれを無効にするだけです。これが私が使用するコードで変更されたコードです:

Dim scrup As Boolean: scrup = DisableScreenUpdating(Not Application.ScreenUpdating)

'Disable ScreenUpdating, for seemless operation
Function DisableScreenUpdating(val As Boolean) As Boolean
  With Application
    If .ScreenUpdating = val Then  'Gets rid of flashes for changing it to the same
      .ScreenUpdating = Not val
    End If

    'Doesn't matter what happens above, this is based on what Excel would send back
    DisableScreenUpdating = Not .ScreenUpdating
  End With
End Function
于 2012-10-18T18:23:09.993 に答える
0

私はバグを見ました...それでもステートメントは機能しますが、VBAエディターだけが変更を認識しません。ただし、変数を割り当ててVBAエディターで読み取ることにより、変更を確認できます。

    >Sub testing()
    >Dim i As Long
    >
    >Application.ScreenUpdating = False
    >i = Application.ScreenUpdating
    >MsgBox "Assigned to i...real value = " & CBool(i)
    >
    >Application.ScreenUpdating = True
    >i = Application.ScreenUpdating
    >MsgBox "Value of Application.ScreenUpdating = " & CBool(i)
    >End Sub
于 2013-02-18T17:54:15.907 に答える