2016-09-17 4 views
1

私はこの特定のファイルを長年(費用追跡/小切手)使用してきました。それにはいくつかのシンプルなマクロがありますが、私が遭遇したような何かをするために何年もの細かいチューニングをしてきた人はいません。私はそれがシナリオに違いがあれば、Excel 2013を実行しています。

数ヶ月前、ワークシートの未使用領域にデータを入力すると、「Mon」、「Tue」などの結果が表示されることがわかりました。ツールバーの書式設定ドロップダウンリストを見ると、私が期待していたように、カスタムではなく、一般的なものです(特定のフォーマットは[$ -409] dddです)。長い間、私は新作の書式を私が必要とするもの(一般、経理、パーセンテージなど)に調整し、続けました。最近はイライラしており、さらに調査することにしました。

通常、一般的な形式になっていたすべてのセルは、実際にはカスタムとしてフォーマットされているようです。私が気がつかなかったセルのほとんどは、バランス、コントリビューションなどのテキストなので、書式設定が変更されたことを認識しませんでした。アカウンティング、ナンバー、パーセンテージなどのように特別にフォーマットされたセルだけがブランケット「カスタム化」の影響を受けません。

[$ -409] dddに変更を加えるマクロにはコードがありません。特定のページに "mmm dd"を適用するコードのセクションが1つだけあり、 "mmm dd "

誰かが何が起きたかについての手掛かりはありますか?私は状況を改善する方法についての提案にも開いています。私はすべてのワークシートのすべてのセルを歩き回り、[$ -409] dddに対して書式をチェックしてGeneralに変更するブルートフォースマクロを検討しています。

答えて

1

これは、標準スタイルが破損している場合に発生します。それ(右クリックを使用して)を調べ、必要に応じて修正:

enter image description here

0

Gary's Studentはこの原因についての最も可能性の高い権利です。とにかく、それをどうやって修正するかわからない、あるいは原因が他のものになった場合は、ワークブック内のすべてのワークシートの状況を解決するための強引な方法があります。注意の

いくつかの単語:それは、ブック内のすべてのセルをループするので

1)これは、実行するのに非常に長い時間がかかります。

2)間違った番号形式の名前を正確に正しく挿入してください。そうでないと正しく動作しません。

3)誤って何かを壊さないようにする前に、問題のブックをコピーしてください。

Sub resetNumberFormats() 

    Dim sht As Excel.Worksheet 
    Dim cll As Range 
    Dim wrongNumberformat As String 

    Application.ScreenUpdating = False 

    wrongNumberformat = "[$-409]ddd" 

    For Each sht In Worksheets 
     For Each cll In sht 
      If wrongNumberformat = cll.NumberFormat Then cll.NumberFormat = "General" 
     Next cll 
    Next sht 

    Application.ScreenUpdating = True 

End Sub 

編集

次のコードはるかに高速で、私が瞬時に動作します。代わりにこれを試してください:

Sub setNumberFormats() 

    Dim sht As Excel.Worksheet 
    Dim cll As Range 
    Dim wrongNumberformat As String 

    ' insert VBA code for wrong number format below 
    wrongNumberformat = "[$-409]ddd" 

    With Application 
     .FindFormat.NumberFormat = wrongNumberformat 
     .ScreenUpdating = False 
    End With 

    On Error Resume Next 
    For Each sht In Worksheets 
     Do While Err.Number = 0 
      sht.Cells.Find(What:="*", SearchFormat:=True).NumberFormat = "General" 
     Loop 
     Err.Clear 
    Next sht 

    Application.ScreenUpdating = True 

End Sub 
関連する問題