Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione di dati
Ciao Kimi_266,
In attesa della tua risposta, per copiare solo i record che hanno una data qualsiasi nella colonna Note, prova il seguente codice aggiornato:
'========>>
Option Explicit
'-------->>
Public Sub Tester()
Dim WB As Workbook
Dim srcSH As Worksheet, destSH As Worksheet
Dim srcRng As Range, destRng As Range, copyRng As Range
Dim arrIn As Variant
Dim iRow As Long, jRow As Long, iCtr As Long
Const sFoglio\_Sorgente As String = **"Ordini da Produrre " '<<=== Modifica**
Const sFoglio\_Destinazione As String = **"Tab graf." '<<=== Modifica**
Const sColonne\_Da\_Copiare As String = **"B:Q" '<<=== Modifica**
Const sColonne\_Da\_Incollare As String = **"A:O" '<<=== Modifica**
Const sColonna\_Data As String = **"L" '<<=== Modifica**
Const iPrima\_Riga\_Dati As Long = **2 '<<=== Modifica**
Const sPrimaColonna\_Destinazione As String = **"A" '<<=== Modifica**
Const sColonna\_Da\_Non\_Copiare As String = **"I" '<<=== Modifica**
Set WB = ThisWorkbook
With WB
Set srcSH = .Sheets(sFoglio\_Sorgente)
Set destSH = .Sheets(sFoglio\_Destinazione)
End With
With srcSH
iRow = LastRow(srcSH, .Columns(sColonne\_Da\_Copiare), iPrima\_Riga\_Dati)
Set srcRng = .Range(sColonne\_Da\_Copiare).Resize(iRow - iPrima\_Riga\_Dati + 1).Offset(iPrima\_Riga\_Dati - 1)
srcSH.Columns(sColonna\_Da\_Non\_Copiare).Hidden = True
End With
srcRng.AutoFilter Field:=13, Operator:= \_
xlFilterValues, Criteria2:=Array(0, "12/31/2024", 0, "12/31/2023", 0, "12/31/2022")
On Error Resume Next
Set copyRng = srcRng.SpecialCells(xlCellTypeVisible)
On Error GoTo XIT
If copyRng Is Nothing Then
Call MsgBox(Prompt:="Nessun dato trovato da copiare!", \_
Buttons:=vbInformation, \_
Title:="REPORT")
GoTo XIT
End If
With destSH
jRow = LastRow(srcSH, .Columns(sColonne\_Da\_Incollare))
Set destRng = .Cells(jRow + 1, sPrimaColonna\_Destinazione)
End With
copyRng.Copy Destination:=destRng
XIT:
With srcSH
.ShowAllData
.Columns(sColonna\_Da\_Non\_Copiare).Hidden = False
End With
End Sub
'--------->>
Public Function LastRow(SH As Worksheet, _
Optional Rng As Range, \_
Optional minRow As Long = 1)
If Rng Is Nothing Then
Set Rng = SH.Cells
End If
On Error Resume Next
LastRow = Rng.Find(What:="\*", \_
After:=Rng.Cells(1), \_
Lookat:=xlPart, \_
LookIn:=xlFormulas, \_
SearchOrder:=xlByRows, \_
SearchDirection:=xlPrevious, \_
MatchCase:=False).Row
On Error GoTo 0
If LastRow < minRow Then
LastRow = minRow
End If
End Function
'<<========
Potresti scaricare il mio file di prova Kimi20221201.xlsm
===
Regards,
Norman