Ti ho modificato la prima parte della Sub NuovoFarmaco per
-controllare che una sigla sia inserita in B3
-controllare che la stessa sigla non sia gia' presente nel foglio corrente ("Solo Farmaci")
-accodare la nuova sigla sul foglio corrente
-accodare la nuova sigla in "Elenco Farmaci", se la nuova sigla non e' gia' presente
La seconda parte si occupa dell'ordinamento e praticamente non e' cambiata (salvo 1000 -> 10000)
Il nuovo codice complessivo:
- Codice: Seleziona tutto
Sub NuovoFarmaco()
' Application.ScreenUpdating = False 'Inutile
If Range("B3").Value <> "" Then
If IsError(Application.Match(Range("B3").Value, Range("B6:B10000"), False)) Then
Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Value = Range("B3").Value
MsgBox (Range("B3").Value & vbCrLf & "Nuovo farmaco INSERITO")
If IsError(Application.Match(Range("B3").Value, Sheets("Elenco Farmaci").Range("B6:B10000"), False)) Then
Sheets("Elenco Farmaci").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Value = Range("B3").Value
End If
Else
Range("B3").Select
rispo = MsgBox("Farmaco gia' presente in elenco; inserimento Abortito", vbCritical, "ERRORE")
Exit Sub
End If
Else
rispo = MsgBox("Nessun Farmaco in B3; procedura di inserimento abortita", vbExclamation, ERRORE)
Range("B3").Select
Exit Sub
End If
'
ActiveWorkbook.Worksheets("Solo Farmaci").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Solo Farmaci").Sort.SortFields.Add Key:=Range("B7" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Solo Farmaci").Sort
.SetRange Range("B7:B10000")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("B3").Select
Selection.ClearContents
End Sub
La macro per "Nuovo Materiale" e' praticamente identica, salvo modifica dove vedi la scritta del nome foglio; sono certo che non avrai problemi (ma se per assurdo ce ne fossero sai dove trovarci)
Ciao