Ciao,
prima leggi quanto ti ha scritto Flash.Premesso che non sono entrato nei meriti del codice ho solo fatto modifiche.
Prova questo codice (è il tuo al quale ho messo, davanti ogni istruzione "Cells" o "Range" i riferimenti al foglio di appartenenza).
Alcune istruzioni le ho modificate, altre aggiunte ed altre commentate (non vengono eseguite) poi tu le cancellerai.
Troverai i commenti nel codice
- Codice: Seleziona tutto
Sub Ricerca()
Application.ScreenUpdating = False
Application.Calculation = xlManual
'.................................................... AGGIUNTE
Dim Ws1 As Worksheet, Ws2 As Worksheet
Set Ws1 = Worksheets("Foglio1")
Set Ws2 = Worksheets("Foglio2")
'.................................................... AGGIUNTE
Ws1.Cells(4, 28) = Ws1.Cells(4, 11)
Ws1.Cells(4, 30) = Ws1.Cells(7, 4)
Ws1.Cells(4, 6) = Ws1.Cells(3, 6)
Ws1.Cells(3, 28) = Ws1.Cells(7, 2)
' Worksheets("Foglio2").Select 'qui cambia visione foglio <<-------------- Cancellare
F = Ws2.Cells(1, 26)
FT = Ws2.Cells(1, 1)
Ws2.Range(Ws2.Cells(3, 28), Ws2.Cells(4000, 52)).Clear
' Selection.Clear
' Worksheets("Foglio1").Select <<-------------- Cancellare
V = Ws1.Cells(4, 38)
' Worksheets("Foglio2").Select <<-------------- Cancellare
Ws2.Cells(1, 31) = V
For X = 1 To FT - F
For Y = 5 To 24
If Ws2.Cells(X + 1, Y) = V Then
Ws2.Cells(X + 1, 28) = 1
End If
Next
Next
' Worksheets("Foglio1").Select <<-------------- Cancellare
Ws1.Range("A1").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Set Ws1 = Nothing
Set Ws2 = Nothing
End Sub
CONTROLLA BENE che io abbia scritto:
Ws1 dove i dati erano relativi al Foglio1
e
Ws2 dove i dati erano relativi al Foglio2