8

自動化して配布している大規模なデータセットがいくつかあります。テキストとして保存された数値についてユーザーに警告する小さな緑色の三角形を削除したいと考えています。次のコードを使用しましたが、大規模なシートでは非常に遅くなります。

     Range(Cells(1, 1), Cells(lastrow, lColumn)).Select
     'kill those dang green cell triagles
     Dim rngCell As Range, bError As Byte
         For Each rngCell In Selection.Cells

             For bError = 3 To 3 Step 1

                 With rngCell
                     If .Errors(bError).Value Then
                         .Errors(bError).Ignore = True
                     End If
                 End With
             Next bError
         Next rngCell

ご覧のとおり、回避しようとしているすべてのエラーをループしないことで、すでに 1/7 の時間に短縮されていますが、それでも非常に遅いです。

また、私はすでに知っています

     Application.ErrorCheckingOptions.NumberAsText = False

しかし、ユーザーのシステム設定を変更したくないので、使用したくありません。すべてのセルをループせずにループの効果が必要です。セルごとにループせずに範囲全体のチェックを停止するように Excel に指示することはできますか?

これを行うための効果的かつ迅速な方法は非常に役立ちます。前もって感謝します!!

4

5 に答える 5

12

Range(...).Errors(3).Ignore = TrueRange が 1 つのセルより大きい場合、明らかな答え ( ) は機能しないようです。

少し実験した後、セルの範囲を手動で選択し、表示される小さなポップアップ メニューをクリックして、範囲内のすべてのエラーを無視するように指示できることがわかりましたが、これに相当する VBA はないようです。

マクロ レコーダーを使用してこの実験を行っても何も記録されません。これは通常、この機能を実装した Microsoft のプログラマーが無能であることを示しています。

悲しいことに、これはループする以外に解決策がないことを意味すると思います。

関連している

于 2015-04-17T20:28:41.083 に答える
4

推奨される解決策は、文字列をExcel に取り込む前に数値に変換することです。たとえば、SQL を使用していて、数値NVARCHARがデータベースにとして保存されているCONVERT(int, colName)場合、それを Excel に取り込むときに SQL ステートメントで a を使用します。これにより、数値として表示され、そのメッセージが表示されなくなりました。

この種のオプションが利用できない場合は、別の方法でそのエラーを修正できます。テキストエラーとして保存された数値がそれ自体と等しい値の範囲を設定するだけです。

例えば:

Sub Test()

    Sheets("Sheet1").Range("A1:A3").Value = Sheets("Sheet1").Range("A1:A3").Value

End Sub

この例A1:A3の は、テキストとして保存したくない値の範囲です。

数値には先行ゼロがあるため、これらのセルの書式設定を変更して、これらのゼロを追加できます。

Sub Test()

    Sheets("Sheet1").Range("A1:A3").Value = Sheets("Sheet1").Range("A1:A3").Value
    'This assumes your numbers are 11 digits long
    'Thus 11132 would display as 00000011132
    Sheets("Sheet1").Range("A1:A3").NumberFormat = "00000000000"

End Sub

これにより、表示が変更され、先行ゼロが再び表示されます。このデータを何らかの方法でエクスポートする場合は、この特定の列が数値ではなくテキストとしてエクスポートされるようにするための措置を講じる必要があるかもしれませんが、詳細がなければそれ以上のことはできません.

于 2015-04-17T20:02:18.833 に答える