Macro VBA excel

Anonimo
2016-02-24T16:10:40+00:00

Buonasera a tutti,

Ho un problema che non riesco a risolvere in quanto non sono molto ferrato nell'argomento.

In un foglio excel, nominato "carico" ho una serie di caselle da compilare attraverso degli elenchi collegati,

una volta compilate queste caselle vengono riportate sulla riga 36 da A a L.

Io vorrei attraverso l'utilizzo di un pulsante "CARICA/SCARICA" copiare questa riga nel foglio DATABASE MOVIMENTI creando un elenco , quindi cancellare automaticamente le celle compilate del foglio CARICO.

Ho provato a creare una macro per il pulsante ma con scarsi risultati.

Vi ringrazio

Alessandro

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

1 risposta

Ordina per: Più utili
  1. Anonimo
    2016-02-24T16:57:07+00:00

    Ciao Alessandro,

    Ho un problema che non riesco a risolvere in quanto non sono molto ferrato nell'argomento.

    In un foglio excel, nominato "carico" ho una serie di caselle da compilare attraverso degli elenchi collegati,

    una volta compilate queste caselle vengono riportate sulla riga 36 da A a L.

    Io vorrei attraverso l'utilizzo di un pulsante "CARICA/SCARICA" copiare questa riga nel foglio DATABASE MOVIMENTI creando un elenco , quindi cancellare automaticamente le celle compilate del foglio CARICO.

    Ho provato a creare una macro per il pulsante ma con scarsi risultati.

    Prova qualcosa del genere:

    • Alt+F11 per aprire l'editor di VBA
    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim srcSH As Worksheet, destSH As Worksheet

        Dim srcRng As Range, destRng As Range

        Dim LRow As Long

        Set WB = ActiveWorkbook

        With WB

            Set srcSH = WB.Sheets("Carico")

            Set destSH = .Sheets("Database Movimenti")

        End With

       Set srcRng = srcSH.Range("A36:L36")

       With destSH

            LRow = LastRow(destSH, .Columns("A:A"))

            Set destRng = .Range("A" & LRow + 1)

        End With

        With srcRng

            .Copy Destination:=destRng

            .ClearContents

        End With

    End Sub

    '--------->>

    Public Function LastRow(SH As Worksheet, _

                     Optional Rng As Range, _

                     Optional minRow As Long = 1)

        If Rng Is Nothing Then

            Set Rng = SH.Cells

        End If

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

                           after:=Rng.Cells(1), _

                           Lookat:=xlPart, _

                           LookIn:=xlFormulas, _

                           SearchOrder:=xlByRows, _

                           SearchDirection:=xlPrevious, _

                           MatchCase:=False).Row

        On Error GoTo 0

        If LastRow < minRow Then

            LastRow = minRow

        End If

    End Function

    '<<========= 

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Salva il file con l’estensione xlsm
    • Alt+F8 per aprire  la finestra di gestione delle macro
    • Seleziona Tester | Esegui

    Potresti scaricare il mio file di prova Alessandro20160224,xlsm a:

    https://www.dropbox.com/s/c73eu9zrgn4od85/Alessandro20160224.xlsm?dl=0

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento