Riepilogando:
Il file è costituito da due fogli per il momento: "SCHEDA" e "REGISTRO"
SCHEDA:
Il foglio è composto da uno specchietto in cui una volta compilato nei suoi campi si clicca sul bottone e i dati vengono copiati tramite macro nel foglio registro.
REGISTRO:
Nel foglio c'è una griglia in cui vengono riportati i dati tratti dal foglio scheda.
Vi sono due Macro che popolano il file:
Una nel modulo 2 (il modulo 1 non c'è) che copia i dati nel foglio "REGISTRO"
- Codice: Seleziona tutto
Sub registra()
'
' registra Macro
'
'
Sheets("REGISTRO").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Range("A2").Select
Sheets("SCHEDA").Select
Range("D5").Select
Selection.Copy
Sheets("REGISTRO").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("SCHEDA").Select
Range("D7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("REGISTRO").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("SCHEDA").Select
Range("D9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("REGISTRO").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("SCHEDA").Select
Range("D11").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("REGISTRO").Select
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("SCHEDA").Select
Range("D13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("REGISTRO").Select
Range("E2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("SCHEDA").Select
Range("D15").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("REGISTRO").Select
Range("F2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("SCHEDA").Select
Range("D17").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("REGISTRO").Select
Range("G2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B6").Select
Sheets("SCHEDA").Select
Range("D5:D17").Select
Range("D17").Activate
Application.CutCopyMode = False
Selection.ClearContents
Range("D5").Select
End Sub
E una seconda macro, che adatta le celle al contenuto, associata al foglio REGISTRO così composta:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveCell.EntireRow.AutoFit
End Sub
A questo punto vorrei che l'elenco fosse sempre in ordine alfabetico (con colonna di riferimento D = cliente), a meno che l'utente non si avvalga dei filtri manuali (che ancora non sono presenti nel file però).
Perciò, dopo aver visto questo video ho provato ad inserire in REGISTRO il codice in questo modo:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveCell.EntireRow.AutoFit
Range("A:G").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlYes
End Sub
Ma mi dava errore, perciò ho provato a ad inserire la macro in un modulo a parte
- Codice: Seleziona tutto
Sub OrdineCrescente()
Range("A:G").Sort _
Key1:=Range("D1"), _
Order1:=xlAscending, _
Header:=xlYes
End Sub
e poi di richiamarla così:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveCell.EntireRow.AutoFit
Call OrdineCrescente
End Sub
Ma così mi sovrascrive sempre la stessa riga..
Che sia il comando del riporto del testo
- Codice: Seleziona tutto
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
che va in conflitto con la nuova macro? Mi aiutate a capire per favore?