Condividi tramite

Inserimento dati con userform

Anonimo
2019-07-23T12:36:22+00:00

Salve a tutti

sono un pensionato (e dunque ancora "analogico") che aiuta in una piccola ONLUS cittadina e sto provando a fare un programmino per la contabilità con il VBA di excel.

La userform creata ha 9 caselle di testo che inseriscono i dati nelle celle del Foglio 1 dalla colonna A fino alla I

(data, codice, causale, Banca entrate, Banca uscite, Posta entrate, Posta uscite, Cassa entrate, Cassa uscite)

Con il seguente comando ad ogni immissione dati questi vengono scritti correttamente nella riga immediatamente successiva. (a partire dalla 5 che le altre sono l'intestazione)

numriga = Sheets("Foglio1").Range("A5").CurrentRegion.Rows.Count

numriga = numriga + 1

  Però nelle colonne successive alla I ci sono altri comandi che si attivano all'inserimento della data.

Esempio nella colonna J

=SE(A7<>"";J6+D7-E7;"")  

ovvero se la colonna A alla riga 7 contiene la data (cioè sono stati inseriti dei dati anche nelle celle successive) mi sommi il saldo precedente J6 + nuove entrate D7 - nuove uscite E7 e così via.

fin qui tutto bene, se c'è la data avvengono tutte le immissioni e le successive operazioni, ma se questa ultima formula la scrivo ad esempio nelle prime 10 righe della colonna J affinché ad ogni immissione dati mi ritrovi automaticamente il saldo finale, VBA legge queste righe contenenti la formula come piene e in virtù del precedente numriga = numriga + 1  inizia a scrivere dalla riga 11 perchè nelle righe precedenti vede che c'è qualcosa.

Per le righe va bene As Long, ma come posso fare per delimitare il range da A a I per le colonne  affinché VBA consideri solo le 9 colonne e non legga anche la J, K, ecc.

Grazie infinite

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

2 risposte

Ordina per: Più utili
  1. Anonimo
    2019-07-24T06:50:47+00:00

    Grazie, proverò in giornata ma perdona l'ignoranza, non capisco come quell'End(xlDown).Row faccia lavorare VBA fino alla colonna 9 e ignorare il resto. Questa stringa vuol forse dire che VBA deve tenere conto solo dei dati che saranno inseriti dalle 9 caselle dello userform?

    Questo per comprendere meglio quello che sto facendo e magari sarà utile anche ad altri.

    Grazie di nuovo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-07-23T13:35:49+00:00

    Ciao Valentino,

    sono un pensionato (e dunque ancora "analogico") che aiuta in una piccola ONLUS cittadina e sto provando a fare un programmino per la contabilità con il VBA di excel.

    La userform creata ha 9 caselle di testo che inseriscono i dati nelle celle del Foglio 1 dalla colonna A fino alla I

    (data, codice, causale, Banca entrate, Banca uscite, Posta entrate, Posta uscite, Cassa entrate, Cassa uscite)

    Con il seguente comando ad ogni immissione dati questi vengono scritti correttamente nella riga immediatamente successiva. (a partire dalla 5 che le altre sono l'intestazione)

    numriga = Sheets("Foglio1").Range("A5").CurrentRegion.Rows.Count

    numriga = numriga + 1

      Però nelle colonne successive alla I ci sono altri comandi che si attivano all'inserimento della data.

    Esempio nella colonna J

    =SE(A7<>"";J6+D7-E7;"")  

    ovvero se la colonna A alla riga 7 contiene la data (cioè sono stati inseriti dei dati anche nelle celle successive) mi sommi il saldo precedente J6 + nuove entrate D7 - nuove uscite E7 e così via.

    fin qui tutto bene, se c'è la data avvengono tutte le immissioni e le successive operazioni, ma se questa ultima formula la scrivo ad esempio nelle prime 10 righe della colonna J affinché ad ogni immissione dati mi ritrovi automaticamente il saldo finale, VBA legge queste righe contenenti la formula come piene e in virtù del precedente numriga = numriga + 1  inizia a scrivere dalla riga 11 perchè nelle righe precedenti vede che c'è qualcosa.

    Per le righe va bene As Long, ma come posso fare per delimitare il range da A a I per le colonne  affinché VBA consideri solo le 9 colonne e non legga anche la J, K, 

    Prova qualcosa del genere:

             numriga = Sheets("Foglio1").Range("A5").End(xlDown).Row

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento