Ciao Antonio,
In pratica in un foglio excel ho bisogno di confrontare due colonne e cioè A1 con D1, A2 con D2,....,An con Dn che devono essere uguali fra loro (A1=D1, A2=D2 ecc.,) se questo non accade e uno dei confronti non rispetta la condizione, ho bisogno di un msg
che mi indichi la cella della colonna D che non rispetta il requisito di uguaglianza con la corrispondente cella nella colonna A.
Supponendo che una semplice formula non sia sufficiente, prova qualcosa del genere:
- Alt-F11 per aprire l'editor di VBA
- Alt-IM per inserire un nuovo modulo di codice
- Nel nuovo modulo vuoto, incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Public Sub Tester()
Dim WB As Workbook
Dim SH As Worksheet
Dim Rng As Range, Rng2 As Range, rCell As Range
Dim LRow As Long
Dim arr As Variant, arr2 As Variant
Dim arrOut() As Variant
Dim i As Long, j As Long, k As Long
Dim sMsg As String
Const sFoglio As String = "Foglio1" '<<=== Modifica
Const primaColonna As String = "A" '<<=== Modifica
Const secondaColonna As String = "D" '<<=== Modifica
Const primaRiga As Long = 2 '<<=== Modifica
Const sStr As String = _
"Le celle non uguale sono:"
Set WB = ThisWorkbook
Set SH = WB.Sheets(sFoglio)
With SH
LRow = LastRow(SH, .Columns(primaColonna))
Set Rng = .Range(primaColonna & primaRiga). _
Resize(LRow - primaRiga + 1)
Set Rng2 = .Range(secondaColonna & primaRiga). _
Resize(LRow - primaRiga + 1)
End With
arr = Rng.Value
arr2 = Rng2.Value
For i = 1 To UBound(arr)
If UCase(arr(i, 1)) <> UCase(arr2(i, 1)) Then
j = j + 1
ReDim Preserve arrOut(j)
arrOut(j) = Rng.Cells(i).Address(0, 0) _
& vbTab _
& Rng2.Cells(i).Address(0, 0)
End If
Next i
If CBool(j) Then
sMsg = sStr & Join(arrOut, vbNewLine)
Else
sMsg = "Tutte le celle confrontate sono uguale"
End If
Call MsgBox(Prompt:=sMsg, _
Buttons:=vbInformation, _
Title:="CONFRONTO")
End Sub
'--------->>
Public Function LastRow(SH As Worksheet, _
Optional Rng As Range)
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
End Function
'<<=========
- Alt-Q per chiudere l'editor di VBA e tornare a Excel.
- Alt-F8 per aprire la finestra di gestione delle macro
- Seleziona Tester | Esegui
===
Regards,
Norman