Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Gianfranco,
ciao
Norman
ho idea che la colonna A non debba essere toccata
(forse sbaglio)
Il primo della lista una volta svolto il lavoro dovrebbe diventare dal numero 1 il numero 20
Franco, Alberto ed Ugo (in ordine il 1mo, 2ndo e 3rzo) i quali a fine giornata avranno a loro volta una X accanto ai loro nomi, e l'applicativo li farà scorrere come 18,19 e 20esimi
Credo che tu abbia ragione.
Pertanto, il codice nel modulo di codice del foglio diventa:
'========>>
Option Explicit
'-------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Rng2 As Range, Rng3 As Range
Const sIntervallo As String = "A1:C21"
Set Rng = Me.Range(sIntervallo)
Set Rng2 = Intersect(Rng.Columns(3), Target)
If UCase(Rng2.Cells(1).Value) = "X" Then
On Error Resume Next
Set Rng3 = Rng.Columns(3).SpecialCells(xlBlanks)
On Error GoTo 0
If Not Rng3 Is Nothing Then
Application.EnableEvents = False
Rng3.Value = "a"
Call SortData(Me, Rng.Offset(, 1).Resize(, 2))
End If
With Rng.Columns(3)
.Offset(1).Resize(.Rows.Count - 1).ClearContents
End With
Application.EnableEvents = True
End If
End Sub
'<<========
Mentre il codice nel modulo standard diventerebbe:
'========>>
Option Explicit
'-------->>
Public Sub SortData(SH As Worksheet, Rng As Range)
With SH.Sort
With .SortFields
.Clear
.Add2 Key:=Rng.Columns(2), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
.SetRange Rng
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
'<<========
Ho aggiornato il mio file di prova Stefano20220419.xlsm
===
Regards,
Norman