Wątek przeniesiony 2021-09-16 10:20 z Inne języki programowania przez cerrato.

for each next VBA

0

Witam,

w makrze poniżej nie działa mi właściwie funkcja for each next. Wygląda na to, że nie zmienia się arkusz w pętli i ciągle sprawdzany jest ten sam. Sprawdzałem wstawiając msgbox z nazwą aktywnego arkusza - ciągle jest ten sam i wartość znajduje w tym samym miejscu. Co może być problemem ?
Kod jest roboczy i będzie poprawiony :)

Sub szukaj()
'wyszukiwanie zmiany


Dim dataG11 As String
Dim dataG30 As String
Dim zmiana As String
Dim arkusz As Integer
Dim ws As Worksheet
Dim lastkol As Integer
Dim lastrow As Integer
Dim cell As Range
Dim rng As Range


dataG11 = InputBox("podaj date dla G11")
plikG11 = "nazwa_pliku" & dataG11 & ".xlsx"

dataG30 = InputBox("podaj date dla G30")
plikG30 = "nazwa_pliku" & dataG30 & ".xlsx"

zmiana = InputBox("podaj nazwę zmiany")


Application.ScreenUpdating = False

Application.DisplayAlerts = False
On Error Resume Next
Workbooks.Open Filename:="lokalizacja" & plikG11, UpdateLinks:=0
On Error Resume Next
Workbooks.Open Filename:="lokalizacja" & plikG30, UpdateLinks:=0
Application.DisplayAlerts = True


Windows(plikG11).Activate
For Each ws In ActiveWorkbook.Worksheets
lastkol = Cells(2, 255).End(xlToLeft).Column
lastrow = Range("A65000").End(xlUp).Row
'Set rng = Range(Cells(1, lastkol), Cells(lastrow, lastkol + 5))
Set cell = Range("A1:A50").Find(zmiana)
If cell Is Nothing Then
MsgBox "w pierwszym skoroszycie nie ma"
Else
MsgBox "znalezione = " & cell.Address
End If
Next ws

End Sub
0
For Each ws In ActiveWorkbook.Worksheets
lastkol = ws.Cells(2, 255).End(xlToLeft).Column
lastrow = ws.Range("A65000").End(xlUp).Row
'Set rng = ws.Range(ws.Cells(1, lastkol), ws.Cells(lastrow, lastkol + 5))
Set cell = ws.Range("A1:A50").Find(zmiana)
If cell Is Nothing Then
MsgBox "w pierwszym skoroszycie nie ma"
Else
MsgBox "znalezione = " & cell.Address
End If
Next ws

1 użytkowników online, w tym zalogowanych: 0, gości: 1