macro per posizionare il cursore in fondo ad una tabella dati

Anonimo
2015-12-10T14:10:02+00:00

Salve,

mi servirebbe una macro (da associare all' apertura di una cartella) che selezioni un determinato foglio e che posizioni il cursore nella prima cella della colonna A al di sotto di una tabella (trasformata in tabella dati) pronta per il nuovo inserimento dati nella riga.

grazie

MF

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

Risposta accettata dall'autore della domanda

Anonimo
2015-12-12T18:48:56+00:00

Ciao MecFala,

Prova la seguente versione in cui le modifiche sono evidenziate in grassetto:

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

Option Explicit

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

Private Sub Workbook_Open()

    Dim myTable As ListObject

    Dim SH As Worksheet

    Dim Rng As Range, Rng2 As Range

    Dim iRow

    Const sFoglio As String = "GIORNATE"                          '<<=== Modifica

    Set SH = ThisWorkbook.Sheets(sFoglio)

    Set myTable = SH.ListObjects(1)

    Set Rng2 = myTable.InsertRowRange

    With myTable

        If Rng2 Is Nothing Then

            Set Rng = .HeaderRowRange.Offset(.DataBodyRange.Rows.Count + 1)

            Application.Goto Rng.Cells(1)

        Else

Application.Goto Rng2.Cells(1)

        End If

    End With

End Sub

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

Potresti scaricare il mio file di prova MecFala#2_20151212.xlsm a:

                                  **http://1drv.ms/1NVAQrZ**

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2015-12-10T15:00:56+00:00

CiaoMecFala ,

mi servirebbe una macro (da associare all' apertura di una cartella) che selezioni un determinato foglio e che posizioni il cursore nella prima cella della colonna A al di sotto di una tabella (trasformata in tabella dati) pronta per il nuovo inserimento dati nella riga.

Nel modulo ThisWorkbook (Questa_cartella_di_lavoro), incolla il seguente codice:

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

Option Explicit

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

Private Sub Workbook_Open()

    Dim myTable As ListObject

    Dim SH As Worksheet

    Dim Rng As Range

    Dim iRow

    Const sFoglio As String = "Foglio1"                          '<<=== Modifica

    Set SH = ThisWorkbook.Sheets(sFoglio)

    Set myTable = SH.ListObjects(1)

    With myTable

        Set Rng = .HeaderRowRange.Offset(.DataBodyRange.Rows.Count + 1)

    End With

    Application.Goto Rng.Cells(1)

End Sub

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

Potresti scaricare il file di prova MecFala20151210.xlsm a:

                        **http://1drv.ms/1NXsG8y**

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-12-10T17:20:58+00:00

    Grazie Norman per l'interessamento.

    Funziona perfettamente e ho risolto.

    Ho apprezzato anche la tua 2° versione che "salva" la riga dei totali!

    saluti

    MF

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-12-10T15:29:07+00:00

    Ciao ,

    Per gestire la possibilità che la tabella di Excel potesse avere una riga di totali al suo fondo, la seguente versione del codice sarebbe preferibile in quanto, in tal caso, inserirebbe una nuova riga vuota sopra i totali:

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

    Option Explicit

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

    Private Sub Workbook_Open()

        Dim myTable As ListObject

        Dim SH As Worksheet

        Dim Rng As Range, RngTotals As Range

        Dim iRows As Long

        Dim bTotals As Boolean

        Const sFoglio As String = "Foglio1"                      '<<=== Modifica

        Set SH = ThisWorkbook.Sheets(sFoglio)

        Set myTable = SH.ListObjects(1)

        With myTable

        iRows = .DataBodyRange.Rows.Count

            Set Rng = .HeaderRowRange.Offset(iRows + 1)

           bTotals = Not .TotalsRowRange Is Nothing

        End With

        Application.Goto Rng.Cells(1)

        If bTotals Then

            Selection.ListObject.ListRows.Add (iRows + 1)

        End If

    End Sub

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

    Ho aggiornato il file di prova MecFala20151210.xlsm a:

                            **http://1drv.ms/1NXsG8y**

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Eliminata

    Questa risposta è stata eliminata a causa di una violazione del codice di comportamento. La risposta è stata segnalata manualmente o identificata tramite il rilevamento automatizzato prima dell'esecuzione dell'azione. Per ulteriori informazioni, fai riferimento al codice di comportamento.


    I commenti sono stati disattivati. Ulteriori informazioni