Condividi tramite

Calendario ferie - qualche idea?

Anonimo
2024-04-09T06:44:20+00:00

Rieccomi, se non mi complico la vita non sono contento. Cerco però questa volta qualche idea sul come procedere.

Vediamo se avete proposte!

Allora in:

A1:A10 ho i cognomi delle persone (possono essere anche vuoti

B1:AF10 che corrispondono ai giorni ho i vari dati inseribili (ferie, permesso, donazione) e che sono celle sbloccate.

Fino a qui niente di che.

Adesso io devo spostare un nome (in alto o in basso e vorrei che si spostassero pure tutti i relativi dati ma...

ma come faccio? Perchè il cerca.orizz o cerca.vert non funzionano ovviamente perchè sono celle aperte

Ci vorrebbe qualcosa che memorizza tutta la relativa riga prima dello spostamento in una riga di appoggio perchè i dati potrebbero essere sovrascritti.

Non riesco a pensare ne trovare un modo in excel sempre che la cosa possa essere gestita da excel

Idee?

Grazie mille

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

3 risposte

Ordina per: Più utili
  1. Anonimo
    2024-04-11T09:37:26+00:00

    La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.

    Ciao, RincoStar

    Grazie per la risposta, vedo, è necessario modificare la macro per gestire in modo specifico la copia di tutti i dati della riga dalla colonna A alla colonna AG, inclusa la gestione dei dati nascosti e delle celle bloccate. Ecco una versione aggiornata della macro su misura per le tue esigenze:

    Sub MoveSpecificRowRange()
    
        Dim sourceRow As Long, destRow As Long
    
        Dim ws As Worksheet
    
        Set ws = ActiveSheet
    
        ' Prompt user for source and destination rows
    
        sourceRow = InputBox("Enter the row number to move:", "Source Row")
    
        If sourceRow = 0 Then Exit Sub ' Exit if user cancels or enters invalid data
    
        destRow = InputBox("Enter the destination row number:", "Destination Row")
    
        If destRow = 0 Then Exit Sub ' Exit if user cancels or enters invalid data
    
        ' Ensure that the source and destination rows are different
    
        If sourceRow = destRow Then
    
            MsgBox "Source and destination rows must be different.", vbExclamation
    
            Exit Sub
    
        End If
    
        ' Copy data from source row from columns A to AG
    
        ws.Range("A" & sourceRow & ":AG" & sourceRow).Copy
    
        ' Clear contents in the destination row from columns A to AG to prevent overwriting data unintentionally
    
        ws.Range("A" & destRow & ":AG" & destRow).ClearContents
    
        ' Paste the copied data to the destination row
    
        ws.Range("A" & destRow & ":AG" & destRow).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
    
        ' Clear the original source row to remove duplicated data
    
        ws.Range("A" & sourceRow & ":AG" & sourceRow).ClearContents
    
        Application.CutCopyMode = False
    
        MsgBox "Data from row " & sourceRow & " has been moved to row " & destRow & ".", vbInformation
    
    End Sub
    

    Come funziona questa macro:

    • In particolare, copia e incolla i dati nell'intervallo da A a AG per le righe di origine e di destinazione. In questo modo si garantisce che tutti i dati richiesti, inclusi i dati nascosti e i dati nelle celle bloccate (supponendo che siano sbloccati a livello di codice per la durata dell'operazione), vengano copiati in modo accurato.
    • Richiede ancora le righe di origine e di destinazione tramite caselle di input, fornendo flessibilità per la gestione dinamica dei dati.
    • Prima di incollare i dati nella riga di destinazione, cancella il contenuto della riga di destinazione nell'intervallo da A a AG per garantire che nessun dato esistente venga inavvertitamente unito o sovrascritto.
    • Dopo aver spostato i dati, pulisce la riga originale per evitare duplicati.

    Fasi di implementazione:

    Seguire la stessa procedura descritta nell'esempio precedente per inserire ed eseguire questa macro. Questa versione garantisce che l'intera riga, fino alla colonna AG, venga gestita correttamente, adattandosi alle celle nascoste e bloccate in base alle specifiche.

    Nota finale:

    • Prima di eseguire la macro, assicurarsi che la cartella di lavoro sia salvata in un formato abilitato per le macro (.xlsm) per mantenere la funzionalità della macro.
    • Eseguire sempre il backup dei dati prima di eseguire le macro per evitare modifiche indesiderate.

     Non vedo l'ora di sentirti e condividere ulteriori informazioni.

    Migliori saluti

    Zoro-MSFT | Specialista del supporto della community Microsoft

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2024-04-10T02:51:18+00:00

    Wow Zoro! Grazie. Ho bisogno però che vengano copiati tutti i dati della riga da B:AG (esempio B1:AG1) perchè ho dati nascosti e celle bloccate per evitare che vengano cancellate formule, e ho bisogno che vengano copiati tutti i dati anche se non presenti. Quindi sempre copia di tutta la riga dalla colonna A alla colonna AG

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2024-04-09T10:25:05+00:00

    La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.

    Ciao, RincoStar

    Benvenuto nella community Microsoft e saremo lieti di aiutarti.

    Dati i requisiti, una macro può aiutare ad automatizzare questa attività. Le macro in Excel sono basate su Visual Basic, Applications Edition (VBA) e possono eseguire attività ripetitive e modificare i dati in modi che le formule tipiche non sono in grado di fare. Per lo scenario, una macro potrebbe:

    1. Memorizza temporaneamente i dati della riga selezionata.
    2. Deselezionare la riga originale per evitare duplicazioni.
    3. Inserire i dati nella nuova posizione.
    4. Regolare il resto dei dati di conseguenza per evitare la sovrascrittura.

    Passaggi per creare la macro

    1: Premere ALT+F11 per aprire l'editor di Visual Basic, Applications Edition.

    numero arabo: Inserimento di un nuovo modulo

    • Nell'editor VBA, fai clic con il pulsante destro del mouse su uno degli oggetti per la cartella di lavoro nel riquadro "Progetto" sul lato sinistro.
    • Vai a Inserisci > modulo. Questa azione aggiunge un nuovo modulo al progetto.

    3: Scrivere il codice della macro

    • Copiare e incollare il codice seguente nel nuovo modulo: Sub MoveRowWithData()     Dim sourceRow As Long, destRow As Long     Dim ws As Worksheet     Set ws = ActiveSheet     ' Prompt user for source and destination rows     sourceRow = InputBox("Enter the row number to move:", "Source Row")     If sourceRow = 0 Then Exit Sub ' Exit if user cancels or enters invalid data     destRow = InputBox("Enter the destination row number:", "Destination Row")     If destRow = 0 Then Exit Sub ' Exit if user cancels or enters invalid data     ' Ensure that the source and destination rows are different     If sourceRow = destRow Then         MsgBox "Source and destination rows must be different.", vbExclamation         Exit Sub     End If     ' Temporarily store source row data     Dim tempRow As Range     Set tempRow = ws.Rows(sourceRow).EntireRow     ' Clear the destination row if it's not empty (optional step based on your preference)     ws.Rows(destRow).EntireRow.ClearContents     ' Move the data     tempRow.Copy     ws.Rows(destRow).PasteSpecial Paste:=xlPasteAll     Application.CutCopyMode = False     ' Optionally clear the original row after moving     ws.Rows(sourceRow).EntireRow.ClearContents     MsgBox "Row " & sourceRow & " has been moved to row " & destRow & ".", vbInformation End Sub

    Ecco i miei dati di origine per il test, vedi sotto:

    4: Eseguire la macro

    • Premere Alt + F8 per aprire la finestra di dialogo "Macro".
    • Selezionare MoveRowWithData dall'elenco delle macro.
    • Fare clic su Esegui.

    5: Immettere i numeri di riga

    • Verrà visualizzato un messaggio che richiede il numero di riga di origine. Poiché i dati di Smith vengono spostati dalla riga 4, immettere 4 e fare clic su OK.
    • Un altro prompt chiederà il numero di riga di destinazione. Immettere 19 e fare clic su OK.

    Guarda i risultati qui:

    Questo esempio presuppone che tu stia spostando i dati all'interno dello stesso foglio. Se prevedi di spostare i dati tra fogli o cartelle di lavoro diversi, la macro richiederà ulteriori modifiche per specificare i fogli di lavoro di origine e di destinazione.

    Non vedo l'ora di sentirti e condividere ulteriori informazioni.

    Migliori saluti

    Zoro-MSFT | Specialista del supporto della community Microsoft

    La risposta è stata utile?

    0 commenti Nessun commento