/ / vba problemer med find og findnext - excel, vba, excel-vba

vba problemer med find og findnext - excel, vba, excel-vba

Jeg vil søge på Column 5 på ark BD alle de indgange, der matcher med en vis værdi, der hedder alocacao på mit ark Plan1. Så skal det kopiere værdien på Column 2 til den kaldte celle tecnico1 (de andre celler kaldes tecnico2, tecnico3 and tecnico4). Jeg illustrerer nedenfor:

Indtast billedbeskrivelse her

Cellen med værdien TESTE 2 er den alocacao.

Indtast billedbeskrivelse her

Indtast billedbeskrivelse her

Jeg forsøgte at bruge Find og FindNext, og det er det, jeg forsøgte indtil videre:

Sub VerifProd_Click()

Dim FoundCell As Range
Dim LastCell As Range
Dim FirstAddr As String
Dim fnd As String
Dim i As Long

i = 2
fnd = Sheets(1).Range("alocacao").Value

With Sheets("BD").Columns(5)
Set LastCell = .Cells(.Cells.Count)
End With

Set FoundCell = Sheets("BD").Columns(5).Find(what:=fnd, after:=LastCell)

If Not FoundCell Is Nothing Then
FirstAddr = FoundCell.Address
End If

Do Until FoundCell Is Nothing
Sheets("BD").Cells(i,2).Copy Sheets("Plan1").Range("tecnico" & i).Value
i = i + 1
Set FoundCell = Sheets("BD").Columns(5).FindNext(after:=FoundCell)
If FoundCell.Address = FirstAddr Then
Exit Do
End If
Loop

End Sub

Men det virker ikke og jeg får Run-time fejl 1004 men koden er ikke fremhævet. Jeg er ikke for fortrolig med Find og FindNext, så jeg vil sætte pris på enhver hjælp til at forstå, hvorfor det ikke fungerer propperligt.

REDIGERE

Jeg prøvede noget nyt, og jeg ændrede en del af det bare for at teste det vil indsætte værdien på celle B26. Nu får jeg det Driftstidsfejl 438:

With Sheets("BD").Columns(5)
Set LastCell = .Cells(.Cells.Count)
End With

Set FoundCell = Sheets("BD").Columns(5).Find(what:=fnd, after:=LastCell)

If Not FoundCell Is Nothing Then
FirstAddr = FoundCell.Address
End If

Do Until FoundCell Is Nothing
Sheets("Plan1").Range("B26") = FoundCell.Adress.Offset(0, -3).Value

Set FoundCell = Sheets("BD").Columns(5).FindNext(after:=FoundCell)
If FoundCell.Address = FirstAddr Then
Exit Do
End If
Loop

svar:

2 for svar № 1

Ok, du antager, at du har 4 navngivne celler i ark "Plan1" med navne tecnico1, tecnico2, tecnico3 and tecnico4, Foreslår jeg følgende ændring, idet jeg husker at vi skulle stoppe ved 4 kampe som antallet af navngivne intervaller tecnico:

Sub VerifProd_Click()
Dim FoundCell As Range, FirstAddr As String, fnd As String, i As Long

fnd = Sheets(1).Range("alocacao").value
Set FoundCell = Sheets("BD").Columns(5).Find(what:=fnd, _
After:=Sheets("BD").Cells(Rows.count, 5), Lookat:=xlPart, _
LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext)

If FoundCell Is Nothing Then Exit Sub
Do
i = i + 1
Sheets("Plan1").Range("tecnico" & i).value = FoundCell.Offset(,-3).Value2
Set FoundCell = Sheets("BD").Columns(5).FindNext(After:=FoundCell)
Loop Until FoundCell.Address = FirstAddr Or i >= 4
End Sub

0 for svar № 2

.Find og .FindNext algoritme bruges som nedenfor ...

With Sheets("BD").Columns(5)
Set FoundCell = .Find(what:=fnd, after:=LastCell)

If Not FoundCell Is Nothing Then
FirstAddr = FoundCell.Address
Do
Sheets("BD").Cells(i, 2).Copy Sheets("Plan1").Range("tecnico" & i).Value
i = i + 1
Set FoundCell = .FindNext(FoundCell)
Loop While Not FoundCell Is Nothing And FirstAddr <> FoundCell.Address
End If
End With

Beslægtede spørgsmål


Kommentarer (0)

Tilføj en kommentar