Andare a cella data Odierna

Anonimo
2017-08-30T14:37:59+00:00

Buonasera,

ho questo problema:

Ho un foglio con 12 colonne che sono i mesi e ogni colonna ci sono 31 righe corrispondenti ai giorni

Ho l'esigenza che all'apertura del foglio la cella attiva sia la cella con la data corrispondente alla data odierna.

Per esempio oggi 30/08 la cella selezionata deve essere quella del 30/08 - Ottava Colonna, trentesima riga.

Grazie,

Marco

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
2017-08-31T09:38:19+00:00

Ciao Marco,

caro Norman ho risolto.

Sono uno stupido perché la tua routine lavora su una matrice contigua.

La mia matrice invece ha delle colonne libere e quindi sfalsava il focus.

Con un Select Case ho aggiustato gli indici e ora funziona perfettamente.

Benissimo!  Mi fa piacere che tu abbia risolto il problema e ti ringrazio per il cortese riscontro.

A proposito, l'errore potrebbe sembrare stupido, ma non lo è affatto! La gestione degl'intervalli non contigui può essere soggetto a numerose trappole sottili. 

Per dimostrare uno dei problemi più evidenti, prova il seguente esempio banale:

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

Option Explicit

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

Public Sub Tester()

    Dim WB As Workbook

    Dim SH As Worksheet

    Dim Rng As Range, Rng2 As Range

    Dim i As Long, j As Long

    Set WB = ThisWorkbook

    Set SH = WB.Sheets.Add

    With SH

        For i = 1 To 10 Step 2

            For j = 1 To 10 Step 2

                .Cells(i, j).Value = i * j

            Next j

        Next i

        Set Rng = .UsedRange

        Set Rng2 = Rng.SpecialCells(xlCellTypeConstants)

    End With

    With Rng2

        Call MsgBox( _

             Prompt:="Rng2.Columns.Count = " & .Columns.Count _

                     & vbNewLine _

                     & "Rng2.rows.count = " & .Rows.Count, _

             Buttons:=vbInformation, _

             Title:="REPORT")

    End With

End Sub

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

===

Regards,

Norman

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-08-30T17:29:37+00:00

Ciao Marco,

Il tuo file funziona benissimo

è la macro nel mio file che non va.

Praticamente non fa nulla :-(

ecco perché vorrei darti il mio file....

Fai clic sul mio profilo e decifra l'indirizzo email,

In attesa del tuo file, controlla che: 

  • il nome della procedura sia WorkBook_Open  (obbligatorio!)
  • La procedura si trovi nel modulo Questa_cartella_di_Lavoro(ThisWorkbook) anzichè in modulo di codice standard

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-08-30T16:59:57+00:00

Ciao Marco,

Come al solito,

grazie di cuore Norman

Prego!

non funziona, ti do la mia mail, se vuoi, se non sono indiscreto, mandami mail vuota,

ti risponderò allegando il mio file. 

O se c'è un modo per postarlo qui, illustramelo perché non so come allegarlo.

*** L'indirizzo di posta elettronica viene rimosso per motivi di privacy ***

Sono sicuro che il codice  funzione! Ho provato il codice prima di pubblicare la mia risposta e l'ho appena riprovato, scaricando il file di prova:  aprendolo, automaticamente viene selezionata la cella sul foglio di interesse che corrisponde alla data odierna.

L'unico modo in cui potrei prevedere un problema sarebbe se tu avessi trascurato di attivare le macro all'apertura del file!

Quindi, ti invito di riprovare il mio file di prova.

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-08-30T15:22:07+00:00

Ciao Marco,

Ho un foglio con 12 colonne che sono i mesi e ogni colonna ci sono 31 righe corrispondenti ai giorni

Ho l'esigenza che all'apertura del foglio la cella attiva sia la cella con la data corrispondente alla data odierna.

Per esempio oggi 30/08 la cella selezionata deve essere quella del 30/08 - Ottava Colonna, trentesima riga.

Prova qualcosa del genere:

  • Alt+F11 per aprire l'editor di VBA
  • Ctrl+R per accedere alla finestra Project Explorer ('Gestione progetti')
  • Fai doppio clic sul modulo ThisWorkbook (Questa_cartella_di_Lavoro) del file e incolla il seguente codice evento:

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

Option Explicit

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

Private Sub Workbook_Open()

    Dim SH As Worksheet

    Dim RngCalendario As Range

    Dim iGiorno As Long, iMese As Long

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

    Const sIntervalloCalendario As String = "A1:M32"   '<<=== Modifica

    Set SH = Me.Sheets(sFoglio)

    Set RngCalendario = SH.Range(sIntervalloCalendario)

    iMese = Month(Date)

    iGiorno = Day(Date)

    Application.Goto RngCalendario.Cells(iGiorno, iMese).Offset(1, 1)

End Sub

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

  • Alt+Q per chiudere l'editor di VBA e tornare a Excel
  • Salva il file con l’estensione xlsm
  • Chiudi e riapri ol file

Potresti scaricare il mio file di prova Marco2070830.xlsm

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-08-30T16:18:14+00:00

    Come al solito,

    grazie di cuore Norman

    non funziona, ti do la mia mail, se vuoi, se non sono indiscreto, mandami mail vuota,

    ti risponderò allegando il mio file. 

    O se c'è un modo per postarlo qui, illustramelo perché non so come allegarlo.

    ******@supermagic.it

    Grazie dell'aiuto che vorrai ancora darmi

    Marco

    La risposta è stata utile?

    0 commenti Nessun commento