セルごとにループせずに、VBAを使用して範囲内の緑色の三角形のエラーを無視するにはどうすればよいですか?

ジョンソンジェイソン

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

     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に指示する方法はありますか?

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

ソウルファイア

推奨される解決策は、文字列をExcelに取り込む前に、文字列を数値変換することです。たとえば、SQLNVARCHARを使用していて、データベースにいくつかの数値がaとして格納されている場合、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

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ