› Sviluppare funzionalita su Microsoft Office con VBA › inserire dati in riga aggiuntiva
-
AutoreArticoli
-
Ciao a tutti,
ho aggiunto delle label nella userform1 e collegate alla TxtCodiceConto che nella medesima user mi fa vedere il risultato del CercaVert rispettivamente nelle label "LabelCoordinateBanca" e "labelCoordiantePosteIT". Questi stessi valori, però, non me li trasferisce nel foglio di lavoro.
Per più precisione, il valore della label CoordinateBanca va inserito nella riga aggiuntiva della colonna H, mentre quello della label CoordinatePosteIT nella riga aggiuntiva della colonna J.
Mi potete aiutare per favore ?
Grazie mille
Allego file esempio
Allegati:
You must be logged in to view attached files.Ciao @frasubb,
io sono sempre più convinto che ti stai buttando in un ginepraio pieno di insidie. Lavorare su doppia riga è tremendo...poi lo rendi ancora più difficile con le celle unite. Secondo me più andrai avanti per questa strada e più sarà complicato aiutarti. Mi rendo conto che per te adesso tornare indietro e rifare tutto da capo non è semplice. Ma ritengo che questo tuo lavoro andava strutturato in maniera diversa. I Fogli dovrebbero accogliere in modo tabellare solo i dati grezzi (senza formattazioni particolari), poi attraverso UserForm e con l'utilizzo degli Oggetti dedicati, quali ListBox, ComboBox e TextBox, si va ad interrogare il Foglio, estrapolando i dati per poi manipolarli e riversarli di nuovo sul Foglio. Quindi niente 1 foglio per mese o 1 foglio per anno...basta 1 foglio, che contiene oltre 1 milione di righe...penso che sia sufficiente per diversi anni. A quel punto tu vai a lavorare solo attraverso le UserForm, senza mai vedere Fogli.
Comunque vediamo se risolviamo almeno per adesso questo tuo problema...con la speranza che non andiamo a rovinare altrove:
in
Private Sub cmdInvia_Click()ad un certo punto rimpiazza questo:arr(nRows + 1, 8) = CoordinateBanca arr(nRows + 1, 9) = CoordinatePosteITcon questo:
arr(nRows + 1, 8) = LabelCoordinateBanca 'H arr(nRows + 1, 10) = LabelCoordinatePosteIT 'JPoi proseguendo...nel Bubble Sort:
dove trovi
temp1(2, 9) = arr(r + 1, 9)lo rimpiazzi contemp1(2, 9) = arr(r + 1, 10)poi dove trovi
arr(r + 1, 9) = arr(c + 1, 9)lo rimpiazzi conarr(r + 1, 9) = arr(c + 1, 10)poi dove trovi
arr(c + 1, 9) = temp1(2, 9)lo rimpiazzi conarr(c + 1, 9) = temp1(2, 10)Vedi un po' se risolvi...ma il mio consiglio è di snellire tutta la logica ricostruendo la struttura come suggerito.
ma non poi scrivere i dati direttamente sul foglio excel, senza passare da userform, e controllarli man mano? Ti semplifichi, di molto, la vita
Ciao @alexps81, grazie come sempre per la tua disponibilità, consigli e soluzioni !
Ho provato ad apportare le modifiche da te suggerite, anche disunendo le celle, ma non funziona, ovvero non mi trascrive i dati nelle colonne.
Ho pensato allora ad un'altra cosa, ovvero creare un Commandbutton "ad hoc" (CmdConferma) solo per convalidare, ed inserire, le info relative alle coordinate, e funziona. Ho inserito una call nel Cmd_Invia ("inserisci" nella userform1) così da cliccare un unico pulsante.
Ora però, l'unico problema è che in sede di inserimento di nuovo record, sempre tramite user, questi soli dati delle coordinate me li inserisce in fondo al foglio, ovvero alla prima riga vuota e non in quella relativa al nominativo che sto aggiungendo.
Visto che "quasi" ci siamo ... pensi che si può risolvere ?
Allego file esempio
Grazie mille
Allegati:
You must be logged in to view attached files.@lukereds si certo che posso, ma è solo per un gusto, certamente opinabile, di poter emulare un software
e non in quella relativa al nominativo che sto aggiungendo.
Quando tramite una userform inserisci un nominativo (ed altri dati) su un foglio due sono le ipotesi:
1) Il nominativo non è presente sul foglio ed in tal caso va inserito alla prima riga libera
2) Il nominativo è già presente quindi gli altri dati vanno inseriti (in altre colonne) sulla stessa riga
Puoi usare il metodo Find col quale puoi gestire entrambe le evenienze.
Qui trovi una guida completa del metodo Find.
https://excelmacromastery.com/excel-vba-find/
P.S. Ma perchè nel file ci sono 35 moduli nella maggior parte dei quali vi è una sola macro?
Non sai che in un modulo puoi metterci quante macro vuoi?
@alfrimpa grazie per il tuo suggerimento.
1) Il nominativo non è presente sul foglio ed in tal caso va inserito alla prima riga libera
Questo è il mio caso, dove però tutti i dati scritti nella user vengono esattamente inseriti nel foglio in ordine alfabetico, mentre quelli relativi alle coordinate mi vanno in fondo al foglio.
Perchè questa differenza tra le due cose ?
Questo è il mio caso, dove però tutti i dati scritti nella user vengono esattamente inseriti nel foglio in ordine alfabetico, mentre quelli relativi alle coordinate mi vanno in fondo al foglio.
Vuoi fare un esempio del risultato da ottenere con un file semplice con un un solo foglio (con 3/4 record), una sola userform con le textbox ed un commandbutton ed il codice associato al commandbutton che ti dà il problema?
Vuoi pubblicare il codice che ti dà il risultato errato?
Francamente dal tuo file (che non contiene dati) e contiene decine di moduli, migliaia di righe di codice personalmente non ho capito nulla.
Scusa la domanda: ma perché nella stragrande maggioranza delle volte, rispondi sempre in maniera “piccata” ?
Nella #54693 il file allegato annovera 3 nominativi (foglio “Marzo”) quindi pochi come da te richiesto, non ho detto che mi da errore ma semplicemente che mi scrive i dati in fondo al foglio.
Per quanto concerne il commandbutton, è sempre tutto già scritto chiaramente nella #54693, post al quale mi hai pure risposto (#54697).
Comunque Grazie, lascia stare, risolverò autonomamente o documentandomi sulla rete
Al post 54699 avevo chiesto di vedere il codice che dava il risultato errato ci voleva molto che lo scrivessi qui?
Comunque Grazie, lascia stare, risolverò autonomamente o documentandomi sulla rete
Non c'è nessun problema; buona fortuna.
-
AutoreArticoli
