2016-04-06 26 views
0

私はこれをdo whileループから抜け出す方法を見つけようとしています。アイデアは、私が探していたものを見つけた最初のセルをコピーして、それを参照としてループを破るために使用するためにa1に貼り付けることでした...しかしそれは機能しません。vba do whileループは終了ループを終了しません

Range("A1").Select 
    Cells.Find(What:="pdl", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ 
     xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ 
     , SearchFormat:=False).Activate 
    Dim x As String 
    ActiveCell.Select 
    Selection.Copy 
    Range("A1").Select 
    ActiveSheet.Paste 
    Cells.FindNext(After:=ActiveCell).Activate 

    Do While True 
     ActiveCell.Select 
     If ActiveCell.Address = Range("a1") Then 
      Exit Do 
     Else 
      Selection.Copy 
      ActiveCell.Offset(0, 1).Select 
      ActiveSheet.Paste 
      Cells.FindNext(After:=ActiveCell).Activate 
     End If 
    Loop 

End Sub 

出口からループするだけです。

+2

ActiveCell.Address = Range( "a1")の場合は、Activateと.Selectですべて読みにくくなります。 – Jeeped

+0

あなたのコピー&ペーストの操作について私には明らかではありません。見つけたセルを見つけた場所の下に新しいセルに続けて貼り付けると、貼り付けられたセルが次のセルに表示されます。これにより、文字通りワークシートの行がなくなるまで、別の連続ループが発生する可能性があります。 ** pdl **の値がどこにあるのか、どこに貼り付けるのかを指定してください。 – Jeeped

+0

あなたのコメントは、 "それをa1に貼り付けます"と言っていますが、貼り付けるA1は決して選択しません。 – OldUgly

答えて

0
If ActiveCell.Address = Range("a1") Then 
     Exit Do 
    Else 

Activecell.Addressは決して=範囲(「A1」)(まあ、それはしかし、あなたは「$ A $ 1」を読み取るために、セルA1にテキストが必要になる可能性が

あなたはどうかテストしたい場合

If ActiveCell.Address = "$A$1" Then 
     Exit Do 
    Else 

またはこの

If ActiveCell.Address = Range("A1").Address Then 
     Exit Do 
    Else 

私はしかし、いくつかの再を行うことをお勧めします:ActiveCellのは、セルA1は、あなたがこれを行うことができますです実行時にそれらを使用するのに非常に時間がかかるので、選択と選択を使用せずにマクロを構築する方法を検索します。