Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Antani_27,
Benvenuto alla Community!
mi trovo a dover copiare in automatico i valori presenti in una tabella (quindi con numero di celle impostate) da un foglio a un altro in seguito alla decisione presa da un menu a tendina.
Mi spiego meglio.
Nel foglio 1 (chiamato Confronto) avrò una tabella vuota in cui i dati dovranno essere copiati in automatico (in base alla selezione) dagli altri fogli. Il secondo foglio ( foglio 2 = Revisione1) contiene una tabella (con le stesse dimensioni in termini di numero di celle) e con nome della tabella "Revisione1".
Nel foglio "Confronto" dovrò inserire un elenco a discesa (menu a tendina) in cui poter selezionare la revisione (ad esempio Revisione1). Selezionando, ad esempio, Revisione1 in automatico vorrei che la tabella (vuota) del foglio Confronto si riempisse con i dati presenti nella tabella Revisione1 editata nel foglio corrispondente.
Questo procedimento dovrebbe essere disponibili per N revisioni (quindi N fogli revisioni).
Prova qualcosa del genere:
- Fai clic dx sulla linguetta del foglio Confronto
- Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
- Incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim srcSH As Worksheet
Dim RngMenu As Range
Dim rngDest As Range, RngSrc As Range
Dim sStr As String
Const sCellaMenu As String = "F1" '<<=== Modifica
Const sTabella As String = "A1:D20" '<<=== Modifica
Set RngMenu = Me.Range(sCellaMenu)
If Not Intersect(RngMenu, Target) Is Nothing Then
Set rngDest = Me.Range(sTabella)
sStr = RngMenu.Value
If SheetExists(sStr) Then
Set srcSH = ThisWorkbook.Sheets(sStr)
Set RngSrc = srcSH.Range(sTabella)
rngDest.Value = RngSrc.Value
End If
End If
End Sub
'<<=========
- Alt+IM per inserire un nuovo modulo di codice
- Nel nuovo modulo vuoto, incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Public Function SheetExists(sSheetName As String, _
Optional ByVal WB As Workbook) As Boolean
On Error Resume Next
If WB Is Nothing Then
Set WB = ThisWorkbook
End If
SheetExists = CBool(Len(WB.Sheets(sSheetName).Name))
End Function
'<<=========
- Alt+Q per chiudere l'editor di VBA e tornare a Excel.
- Salva il file con l'estensione xlsm.
Ora, modificando la selezione di voce del menu a tendina. i dati della tabella sul foglio corrispondente verranno copiati nella tabella sul foglio Confronto.
Potresti scaricare il mio file di prova Antani20170306.xlsm a:
https://www.dropbox.com/s/y5cpkv7hhhhstqz/Antani20170306.xlsm?dl=0
===
Regards,
Norman