Temat: lastRow

Mam pewien problem z lastRow. Napisałem poniższe makro do przeszukiwania wszystkich arkuszy w celu znalezienia "szukanej". W każdym arkuszu makro szuka od wiersza 7 do lastRow. I tu mam problem taki, że jak w Sht 1 lastRow = 7 ,a w Sht 2 lastRow =2 i załączę makro w Sht 2 to makro przeszukuje mi także w Sht 1 tylko 2 wiersze. Rozumiem to, ale szukam sposobu żeby przeszukał mi także 5 pozostałych wierszy. Prosiłbym o pomoc.

Sub znajdz()
Dim numerWiersza As Integer
Dim sht As Worksheet
Dim wiersz As Integer
Dim kolumna As Byte
Dim szukana As String
Dim lastRow As Integer
Dim lastColumn as Byte
With ActiveSheet
lastRow = .Cells(.Rows.Count, "A").End(xlUp).row
lastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
numerWiersza = 3
szukana = InputBox("Znaleziona fraza zostanie przekopiowana do arkusza ''skopiowane'' " & vbCrLf & vbCrLf & vbCrLf & "CZEGO SZUKASZ?", "Szukanie")
If szukana = "" Then Exit Sub
For Each sht In ThisWorkbook.Worksheets
If sht.Name <> "wykaz teczek" Then
For wiersz = 7 To lastRow
For kolumna = 1 To lastColumn
If sht.Cells(wiersz, kolumna).Value Like "*" & szukana & "*" Then
sht.Cells(wiersz, kolumna).Rows.EntireRow.Copy
sheets("skopiowane").Select
sheets("skopiowane").Rows(numerWiersza).Select
numerWiersza = numerWiersza + 1
ActiveSheet.Paste
Exit For
End If
Next kolumna
Next wiersz
End If
Next sht
If numerWiersza = 3 Then
Call MsgBox("Brak danych", vbInformation, "Informacja")
Exit Sub
End If
End Sub

Temat: lastRow

wystarczy zrobić tak i działa :)
Sub znajdz()
Dim numerWiersza As Integer
Dim sht As Worksheet
Dim wiersz As Integer
Dim kolumna As Byte
Dim szukana As String
Dim lastRow As Integer
Dim lastColumn as Byte
numerWiersza = 3
szukana = InputBox("Znaleziona fraza zostanie przekopiowana do arkusza ''skopiowane'' " & vbCrLf & vbCrLf & vbCrLf & "CZEGO SZUKASZ?", "Szukanie")
If szukana = "" Then Exit Sub
For Each sht In ThisWorkbook.Worksheets
If sht.Name <> "wykaz teczek" Then
With sht
lastRow = .Cells(.Rows.Count, "A").End(xlUp).row
lastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
For wiersz = 7 To lastRow
For kolumna = 1 To lastColumn
If sht.Cells(wiersz, kolumna).Value Like "*" & szukana & "*" Then
sht.Cells(wiersz, kolumna).Rows.EntireRow.Copy
sheets("skopiowane").Select
sheets("skopiowane").Rows(numerWiersza).Select
numerWiersza = numerWiersza + 1
ActiveSheet.Paste
Exit For
End If
Next kolumna
Next wiersz
End If
Next sht
If numerWiersza = 3 Then
Call MsgBox("Brak danych", vbInformation, "Informacja")
Exit Sub
End If
End Sub

Podobne tematy


Następna dyskusja:

makro lastRow




Wyślij zaproszenie do