Excel VBA質問箱 IV

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

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


7953 / 13644 ツリー ←次へ | 前へ→

【35887】空白だと処理を終了しなくなる方法を教えてください ハオ 06/3/15(水) 14:54 質問[未読]
【35889】Re:空白だと処理を終了しなくなる方法を... やっちん 06/3/15(水) 15:20 発言[未読]
【35894】Re:空白だと処理を終了しなくなる方法を... ハオ 06/3/15(水) 16:06 お礼[未読]
【35898】Re:空白だと処理を終了しなくなる方法を... やっちん 06/3/15(水) 16:55 発言[未読]
【35899】Re:空白だと処理を終了しなくなる方法を... ハオ 06/3/15(水) 17:01 発言[未読]

【35887】空白だと処理を終了しなくなる方法を教え...
質問  ハオ  - 06/3/15(水) 14:54 -

引用なし
パスワード
   何度もすいません。
皆さんの知恵をお借りしたく質問します。

A列、C列にいくつかの数字が並べており、
A列の中にあるC列と同じ数字を削除していく形です。

だが、A列の途中(例えば3行目)が空白だと
作業がストップしてしまいます。
本当は5行まで調査して欲しいが、3行の空白に止まったままで
動かなくなってしまいます。

なにかのコードが間違っていると思うので、どなたか教えてください。
よろしくお願いします。

Private Sub CommandButton1_Click()

Const KEY = ""

ActiveSheet.Range("A3").Activate
Do Until ActiveCell.Row = 5

Dim tate As Integer
  tate = ActiveCell.Row + 1

Dim yoko As Integer
  yoko = ActiveCell.Column

Dim TG As Range

For Each TG In Range("C:C")
  If TG.Value = ActiveCell Then TG.ClearContents
Next

ThisWorkbook.ActiveSheet.Cells(tate, yoko).Select

Loop
Range("A3").Select

End Sub

【35889】Re:空白だと処理を終了しなくなる方法を...
発言  やっちん  - 06/3/15(水) 15:20 -

引用なし
パスワード
   ▼ハオ さん:
こんにちは。
作りを大幅に変更してはどうでしょう。
まず、変数の宣言は最初に書いて、ループの中に書かないようにするのが一般的です。
(Eraseされる場合以外ではそういう記述は見かけないですね。他にはRedimとか。)

C列の全てのセルに対して処理をしていますが、
検索する値がない場合は検索する必要はないですよね?
また、この検索部分はFINDを使ってはどうでしょうか?
別のやり方で、オートフィルターを使う方法もありますね。

プロパティを省略されていますが思わぬ落とし穴にはまることがあります。
ActiveCell.Value とプロパティを明示した方がいいです。

動いているのを見たいのであれば別ですが、Selectしない記述がお勧めです。
Selectする場合でもActiveCellでの記述は、個人的にはしない方がいいかなと。

【35894】Re:空白だと処理を終了しなくなる方法を...
お礼  ハオ  - 06/3/15(水) 16:06 -

引用なし
パスワード
   ▼やっちん さん:
アドバイスをありがとうございます。
でも、申し訳ございません・・
悩んでいる間、下記のコードでやってみたら偶然できました。
私の中では解決したので、ありがとうございました。

Private Sub CommandButton1_Click()

Const KEY = ""

ActiveSheet.Range("A3").Activate
Do Until ActiveCell.Row = 12

Dim tate As Integer
  tate = ActiveCell.Row + 1

Dim yoko As Integer
  yoko = ActiveCell.Column

Dim TG As Range

For Each TG In Range(Range("C2"), Range("C65536").End(xlUp))
  If TG.Value = ActiveCell Then TG.ClearContents
Next

ThisWorkbook.ActiveSheet.Cells(tate, yoko).Select

Loop
Range("A3").Select
End Sub

【35898】Re:空白だと処理を終了しなくなる方法を...
発言  やっちん  - 06/3/15(水) 16:55 -

引用なし
パスワード
   ▼ハオ さん:
結果オーライはよくないですよ(^^;

【35899】Re:空白だと処理を終了しなくなる方法を...
発言  ハオ  - 06/3/15(水) 17:01 -

引用なし
パスワード
   ▼やっちん さん:
申し訳ありません・・・
以後気をつけます。

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