2016-04-06 27 views
0

Bunu yaparken ne yapmam gerektiğini anlamaya çalışıyorum. Buradaki fikir, aradığım şeyi bulduğum ilk hücreyi kopyalamak ve bunu döngüde kırmak için bir referans olarak kullanmak üzere a1'e yapıştırmaktı ... ama işe yaramıyordu.vba, döngü döngü dışı bırakılırken yapılıyor

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 

Sadece çıkıştan geçen döngüyü tutar.

+2

Activate ve .Select öğelerinin tümü bunu okumakta zorlanır, ancak 'ActiveCell.Address = Range ("a1") ise. – Jeeped

+0

Kopyalama ve yapıştırma işleminiz hakkında net değil. Bulunduğunuz hücreleri, onları bulduğunuz yerdeki yeni hücrelere sürekli olarak yapıştırırsanız, yapıştırılan hücreler bir sonraki bulgunda görünür. Bu, çalışma sayfasındaki satırlardan tam anlamıyla bitene kadar başka bir sürekli döngüye yol açabilir. Lütfen ** pdl ** değerlerini nerede bulduğunuzu ve bunları nereye yapıştırdığınızı belirtin. – Jeeped

+0

Yorumlarınız "yapıştırın ve a1 olarak yapıştırın", ancak yapıştırmak için A1'i seçmezsiniz. – OldUgly

cevap

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

Activecell.Address asla = Aralığı (("a1") Eh elinden ancak eğer test etmek istiyorsanız "$ A $ 1"

okumak için A1 hücresindeki metni gerekir ActiveCell A1 hücresi o zaman bunu yapabilirsiniz geçerli:

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

Ya da bu

Ben ancak bazı yeniden yapmak için teşvik edecek
If ActiveCell.Address = Range("A1").Address Then 
     Exit Do 
    Else 

Makroları, seçme ve seçmeyi kullanmadan, çalışma zamanında kullanmak için çok zamana mal olmayacak şekilde nasıl arayacağınızı araştırın.