|
▼ペンネーム船長 さん:
>検索文字がある行を削除したいのですが、
>Set FoundCell = sh.Cells.FindNext(FoundCell)
>のところで、「RangeクラスのFindNextプロパティを取得できません。」
>のエラーが出てしまいます。
>アドバイスをお願いします。
Findメソッド Findnextメソッドでは、
検索が終了してから、処理をしてください。
検索しながら処理を行うと不具合の原因になります。
>Private Sub CommandButton1_Click()
>Dim sh As Worksheet
>Dim FoundCell As Range
>Dim FirstCell As Range
>Dim Target As Range
>Dim r As Integer
>
>Set sh = Worksheets("表")
>Set FoundCell = sh.Cells.Find(What:="検索文字")
>
>If FoundCell Is Nothing Then
> MsgBox "検索文字は見つかりませんでした"
> Exit Sub
>Else
> Set FirstCell = FoundCell
> Set Target = FoundCell
>End If
>
>Do
> Set FoundCell = sh.Cells.FindNext(FoundCell)
' このFoundcellのある行を
'下の方でsh.Rows(r).Delete 行毎に削除しています
’エラーの直接の原因はこれです
'r = FoundCell.Row 要らない
> If FoundCell.Address = FirstCell.Address Then
> Exit Do
> Else
> Set Target = Union(Target, FoundCell)
> 'FoundCellの行を削除する
’sh.Rows(r).Delete ここで削除しない
> End If
>Loop
If Not Target Is Nothing Then
Set Target = Target.EntireRow
Union(Target, Target).Delete
End If
’検索がすべて終わってから削除する
>End Sub
|
|