ここから本文です

Excel vba プログラムについて質問です。

fel********さん

2012/2/815:17:55

Excel vba プログラムについて質問です。

sheet1内でりんごという単語を検索し、
B列のりんごという文字が入っているセルから、
次に空白になっているセルまでを削除するという
プログラムを作成したいです。
15行目のRange(Cells(lngYLine, 1), Cells(Lastrows, 2)).Select
のSelectをDeleteにすると、
「RangeクラスのFindNextプロパティを取得できません」となります。
どうすればよいでしょうか?

よろしくお願いします。

Dim lngYLine As Integer
Dim intXLine As Integer
Dim objFind As Object
Dim strAddress As String

Set objFind = Worksheets("sheet1").Cells.Find("りんご", lookat:=xlPart)
If Not objFind Is Nothing Then
strAddress = objFind.Address
Do While Not objFind Is Nothing
lngYLine = objFind.Cells.Row
intXLine = objFind.Cells.Column

Cells(lngYLine, intXLine).End(xlDown).Select
Lastrows = ActiveCell.Row
Range(Cells(lngYLine, 1), Cells(Lastrows, 2)).Select


Set objFind = Cells.FindNext(objFind)
If strAddress = objFind.Address Then
Exit Do
End If
Loop
Else
MsgBox "見つかりませんでした"
End If
End Sub

閲覧数:
911
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

ja7********さん

編集あり2012/2/914:25:15

> Deleteにすると「RangeクラスのFindNextプロパティを取得できません」となります。
これは、Findで見つかったセルを削除しているのですからFindNextは有り得ません。
ですからFindを Nothingになるまで繰り返すことになるでしょう。
まぁ、検索条件を「部分一致」とし
> 次に空白になっているセルまでを削除
これ↑は 「見つかったセルから最初の空白セルまで」と取れますが、それで良ければこんな感じです。
提示のコードから推測し、AとB列のセルを削除し、上に詰めるものとします。

Sub test()
Dim FRng As Range
Dim Rw As Long
Dim Flg As Boolean
Dim Cnt As Long
Do
Flg = False
Set FRng = Range("B:B").Find("りんご", Lookat:=xlPart)
If Not FRng Is Nothing Then
Rw = FRng.Row
Cnt = Cnt + 1
Do
If Cells(Rw, 2).Value = "" Then Flg = True
Cells(Rw, 1).Resize(, 2).Delete xlShiftUp
Loop Until Flg
End If
Loop Until FRng Is Nothing
If Cnt > 0 Then
MsgBox Cnt & "件 見つかりました。", vbInformation
Else
MsgBox "見つかりませんでした。", vbExclamation
End If
Set FRng = Nothing
End Sub

その他気付いたことですが・・・
Dim lngYLine As Integer '--->シートの行や列を表す変数はLong型を使います。プリフィックスはlngを付けているがIntegerを宣言しています。
Dim intXLine As Integer ' ---> lngXLine As Long
Dim objFind As Object ' ---> Range です。
Dim strAddress As String ' ---> 見つからなくなるまで検索ですからAddressは取得不要です。

この質問は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる