Quando si dispone di una tabella dati in Excel, parte della funzionalità standard è che premendo la scheda nell'ultima cella si aggiunge una nuova riga nella parte inferiore della tabella. Voglio compilare automaticamente quella nuova riga con valori predefiniti utili. In particolare, voglio inserire la data-ora corrente in una cella e copiare i valori in alcune altre celle dalla riga precedente della tabella.Valori predefiniti per i campi in una nuova riga di una tabella dati
Non è possibile farlo utilizzando le formule, ad es. l'utilizzo di =now()
per il timestamp di data e ora è inadeguato perché verrà aggiornato automaticamente ogni volta che il foglio di calcolo viene ricalcolato, mentre io voglio che mantenga la data-ora nel momento in cui è stata aggiunta la riga.
Quindi sto cercando di scrivere VBA per essere attivato dall'evento della riga che si sta aggiungendo e in quel codice per scrivere i valori nelle celle della nuova riga. Da MS documentation ho pensato che DataTable.TableNewRow
sarebbe l'evento appropriato. Ma quando provo a scrivere un codice per quell'evento non viene eseguito. Quando cerco DataTable
nel browser degli oggetti VBA l'evento TableNewRow
non è elencato.
Versioni:
- VBA per le applicazioni 7.1
- Excel 2013
Così le mie domande:
- è la direzione del mio pensiero giusto, o si può suggerire un approccio migliore?
- Potete offrire qualsiasi codice funzionante che faccia qualcosa di simile?
- È
DataTable.TableNewRow
l'evento con cui dovrei lavorare? - Cosa devo fare per ottenere quell'evento accessibile nel mio codice VBA?
+1 L'evento WorkSheet_Change si attiva quando si inseriscono le righe, pertanto potrebbe essere un modo per ottenerlo, se necessario. –
Non ho provato il tuo codice (mi dispiace) ma non vedo come il numero di righe delle tabelle sarà mai maggiore del proprio conteggio delle righe. Sembra che dovresti memorizzare il conteggio delle righe in una variabile pubblica, non nella tabella.Probabilmente mi manca qualcosa. –
@DougGlancy Ah, memorizzo l'intervallo di tabelle, quindi valuto il numero di righe utilizzando la proprietà * Rows.Count *. A proposito, ho imparato qualcosa di nuovo. Di solito, utilizzo un intervallo denominato per tenere traccia dell'inserimento di righe o colonne. * L'evento Worksheet_Change * renderà più semplice. – L42