/ / vba problēmas ar meklēšanu un meklēšanu - excel, vba, excel-vba

VBA problēmas ar find and findnext - excel, vba, excel-vba

Es vēlos meklēt Column 5 uz lapas BD visi ieraksti, kas atbilst noteiktajai vērtībai alocacao manā lapā Plan1. Tad tas ir jāpārkopē vērtība Column 2 uz šūnu, ko sauc tecnico1 (pārējās šūnas tiek sauktas tecnico2, tecnico3 and tecnico4). Tālāk redzu:

šeit ievadiet attēla aprakstu

Šūna ar vērtību TESTE 2 ir alocacao.

šeit ievadiet attēla aprakstu

šeit ievadiet attēla aprakstu

Es mēģināju izmantot meklēšanas un meklēšanas tekstu, un tas ir tas, ko es līdz šim mēģināju:

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

Bet tas nedarbojas un man Izpildīšanas laika kļūda 1004 bet kods nav iezīmēts. Es neesmu pārāk pazīstams ar Find and FindNext, tāpēc es novērtēju jebkuru palīdzību, lai saprastu, kāpēc tā nedarbojas propperly.

EDIT

Es mēģināju kaut ko jaunu, un es to nomainīju tikai, lai pārbaudītu, vai tā ielīmēs vērtību uz šūnas B26. Tagad es esmu Darbības laika kļūda 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

Atbildes:

2 atbildei Nr. 1

Ok pieņemot, ka jums ir 4 nosauktas šūnas lapas "Plan1" ar vārdiem tecnico1, tecnico2, tecnico3 and tecnico4, Es ierosinu šādu modifikāciju, paturot prātā, ka mums vajadzētu apstāties 4 atbilst nosaukumiem, kas ir nosaukto diapazonu skaits 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 atbildei Nr. 2

.Atklājiet.

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

Saistītie jautājumi


Komentāri (0)

Pievieno komentāru