Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12051 / 13645 ツリー ←次へ | 前へ→

【12619】エラーチェックして削除するには? ぶ− 04/4/9(金) 12:58 質問
【12623】Re:エラーチェックして削除するには? Asaki 04/4/9(金) 13:37 回答
【12680】Re:エラーチェックして削除するには? ぶー 04/4/12(月) 13:00 お礼
【12681】Re:エラーチェックして削除するには? Asaki 04/4/12(月) 15:10 回答
【12682】Re:エラーチェックして削除するには? でれすけ 04/4/12(月) 15:10 発言

【12619】エラーチェックして削除するには?
質問  ぶ−  - 04/4/9(金) 12:58 -

引用なし
パスワード
   初めて質問させて頂きます。
F3セル(3行目の6列目)からQ3セルを検索
F4セル(4行目の6列目)からQ4セルを検索・・・・
というふうに検索していって、#N/Aのセルを削除する

というやり方が分かりません。

Dim GYOU As Integer
    Dim RETU As Integer
    GYOU = 3
    RETU = 6
    
    For GYOU = 3 To 300
         For RETU = 6 To 16
           If IsError(ActiveCell.Value) Then
            ERRVAL = ActiveCell.Value
              Select Case ERRVAL
                Case CVErr(xlErrDiv0)
                  Range(GYOU, RETU).Delete
                Case CVErr(xlErrNA)
                  Range(GYOU, RETU).Delete
                Case CVErr(xlErrRef)
                  Range(GYOU, RETU).Delete
                Case CVErr(xlErrValue)
                  Range(GYOU, RETU).Delete
              End Select
           End If
         RETU = RETU + 1
         Next RETU
      RETU = 6
      GYOU = GYOU + 1
    Next GYOU
自分なりに考えて、このように書いてみました。
よろしくお願いします。

【12623】Re:エラーチェックして削除するには?
回答  Asaki  - 04/4/9(金) 13:37 -

引用なし
パスワード
   こんにちは。

一般機能で、ジャンプというのがあります。
(メニューから 編集 >> ジャンプ >> セル選択ボタンクリック >> 「定数」を選択して、エラー値のみをチェック)
これでエラー値のみを選択できますので、お試しになっては如何でしょうか?
希望の動作をするようであれば、マクロの記録で、コードを取ってしまえばよいかと。

因みに、
>If IsError(ActiveCell.Value) Then
という記述がありますが、
ActiveCell
を変更する処理がありませんので、常に同じセルに対して評価することになりそうです。

【12680】Re:エラーチェックして削除するには?
お礼  ぶー  - 04/4/12(月) 13:00 -

引用なし
パスワード
   回答、どうもありがとうございました。
そういうやり方でエラーだけ拾えるなんて知りませんでした。
ですが、そのやり方をしてしまうと、シート全体のエラーを消して
しまいますよね。
自分がやりたいのは、部分的にエラーを消したいのです。
それで、VBAで書いたのを、言われたとおりに直してみたのですが、
どうもうまく動作しませんでした。
とほほ・・・
お礼方々、上にまた質問させてもらいました。

【12681】Re:エラーチェックして削除するには?
回答  Asaki  - 04/4/12(月) 15:10 -

引用なし
パスワード
   >そのやり方をしてしまうと、シート全体のエラーを消してしまいますよね。
範囲を指定してから実行すると、大丈夫なようです。
Range("A1:Z20").SpecialCells(xlCellTypeFormulas, xlErrors).Select

ただし、範囲を指定しても、その範囲内に消したくないエラーがある場合は、
再度、見つかった範囲内をループするなどの処理が必要になります。

【12682】Re:エラーチェックして削除するには?
発言  でれすけ  - 04/4/12(月) 15:10 -

引用なし
パスワード
   ▼ぶー さん:
>回答、どうもありがとうございました。
>そういうやり方でエラーだけ拾えるなんて知りませんでした。
>ですが、そのやり方をしてしまうと、シート全体のエラーを消して
>しまいますよね。
そんなことはありません。
最初に範囲を選択すれば、選択範囲内のセルだけを拾ってくれます。

>どうもうまく動作しませんでした。
・For〜Nextループ内で、ループ制御変数の値を操作してはいけません。
・セルの削除は後ろから攻めてくるのが定石。
以上2点に留意して修正してみてください。

12051 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free