› Excel e gli applicativi Microsoft Office › Archivia dati in Orizzontale da Sx verso Dx
Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
-
AutoreArticoli
-
Buon giorno a tutti,il fine settimana come potete ben vedere dai miei interventi sul forum mi diletto a creare e imparare cose nuove in vba creandomi delle user che poi mi alleggeriscono il lavoro in settimana,anche grazie al vostro aiuto,e vi ringrazio anticipatamente,oggi mi son imbattuto in un altro problema e mi spiego.ho la userform "Certificato" ;facendo doppio clic nella listbox, le textbox si popolano, e fin qui tutto okora quello che mi occorre è:nelle textbox evidenziate in ciano io scrivo dei dati e quello che mi serve e archiviare quei dati con il tasto "archivia - modifica"i dati dovranno esser archiviati nella stessa riga di riferimento del coppio clik , il codice sotto fa già in parte qsta cosa, e cioè se modifico dei dati nelle textbox e clicco sul tasto modifica_archivia i dati nel foglio gestionale vengono sostituiti e modificati,chiusa la premessa appena citata ore vorrei che:i dati delle tre textbox evidenziate in ciano dovranno iniziare ad archiviarsi a partire dalla colonna "P" in poi, in senso orizontale,quindi penso che ci voglia una routin che archivia_Modifica i dati da Sx verso Dx cercando la prima colonna libera partendo da Sx,in pratica il risultato deve essere come la riga 6 del foglio "Gestionale"Allego il file esempio per capire meglio e spero di esser stato chiaro nella descrizione sopra.Qualcuno di voi può esser cosi gentile da suggerirmi la stringa di codice che mi fa ciò e che fa al mio coso?ancora graziePrivate Sub CommandButton25_Click() '< ---------------TASTO ARCHIVIA MODIFICADim no_ligne As IntegerSheets("Gestionale").SelectFor x = 0 To ListBox1.ListCount - 1If ListBox1.Selected(x) = True TheGoTo cEnd IfNext xc:no_ligne = ListBox1.List(x)Cells(no_ligne + 5, 3) = CDate(a2.Value)Cells(no_ligne + 5, 4) = ComboBox4.ValueCells(no_ligne + 5, 11) = ComboBox2.ValueCells(no_ligne + 5, 10) = TextBox100.ValueCells(no_ligne + 5, 12) = CDate(TextBox67.Value)Cells(no_ligne + 5, 13) = TextBox103.ValueCells(no_ligne + 5, 14) = CDate(TextBox104.Value)Cells(no_ligne + 5, 15) = TextBox109.ValueCaricaDatiEnd Sub
Allegati:
You must be logged in to view attached files.
Ciao
Forse non ho capito!
Ma non ti basta aggiungere queste righe:
Cells(no_ligne + 5, 16) = TextBox1.Value
Cells(no_ligne + 5, 17) = TextBox2.Value
Cells(no_ligne + 5, 18) = TextBox86.Value
A meno che tu non intenda altro e, come detto, non ho capito cosa vuoi fare.
Ciao,
Mario
PS - Una precisazione: le variabili che si riferiscono a riga e colonna vanno sempre dichiarate come LONG e non INTEGER
Ciao Marius
Grazie per la risposta. Così come l'hai scritto non e corretto o meglio dire non ottengo il risultato voluto.
In pratica vorrei archiviare i dati delle 3 textbox ciano sempre in orizzntale.
Mi spiego meglio.
Ogni mese devo registrare dati in sequenza sulla stessa riga di selezione con doppio click e non voglio che si sovrascrivono. Ma devo avere il risultato della riga 6 del foglio gestionale.
Spero di esser stato chiaro.
Quindi il codice che mi serve e di cercare la colonna libera sulla riva di selezione con doppio clic
E la colonna di partenza deve essere la P
In pratica facendo riferimento al tuo codice la volta successiva i dati dovranno esser archiviati in
Cells(no_ligne+5,19)=textbox1.value
Cells(no_ligne+5,20)=textbox2.value
Cells(no_ligne+5,21)=textbox86.value
E ancora così via la volta ancora successiva
Cells(no_ligne+5,22)=textbox1.value
Cells(no_ligne+5,23)=textbox2.value
Cells(no_ligne+5,24)=textbox86.value
E così via
Insomma mai sovrascriversi
Spero di aver chiarito il dubbio
E di essermi spiegato ancor di più
questa linea di codice ti trova la prima cella vuota dell'ultima colonna a SX , riferita alla riga del record
finalcol = Cells(no_ligne + 5, Columns.Count).End(xlToLeft).Column
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )
ciao Albatros
grazie per la risposta
ho provato ma tutte le volte mi sovrascrive le stesse celle,
cosa mi manca?
o come va completato il codice
grazie
finalcol = Cells(no_ligne + 5, Columns.Count).End(xlToLeft).Column
Cells(no_ligne + 5, 16) = TextBox1.Value
Cells(no_ligne + 5, 17) = TextBox2.Value
Cells(no_ligne + 5, 18) = TextBox86.Value
finalcol ti trova l'utima colonna libera,quindi
Cells(no_ligne + 5, finalcol) = TextBox1.Value
e poi continui...
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing) Sempre il mare, uomo libero, amerai! ( Charles Baudelaire )
Ho risolto cosi
spero che vada bene,
ho cmq ottenuto il risultato voluto
finalcol = Cells(no_ligne + 5, Columns.Count).End(xlToLeft).Column + 1
Cells(no_ligne + 5, finalcol) = TextBox1.Value
finalcol1 = Cells(no_ligne + 5, Columns.Count).End(xlToLeft).Column + 1
Cells(no_ligne + 5, finalcol1) = TextBox2.Value
finalcol2 = Cells(no_ligne + 5, Columns.Count).End(xlToLeft).Column + 1
Cells(no_ligne + 5, finalcol2) = TextBox86.Value
perchè tutto sto parapiglia, bastava incrementare il valore di finalcol,finalcol+1,finalcol+2
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )
Buon giorno
Grazie di tutto
Buona sera a tutti .
Riprendo qsta discussione perché mi è sorto un problema è cioè! Se sbaglio a modificare i dati volevo evitare di fare di nuovo doppio clic in listbox e rimodificare i dati. Esiste un modo magari con un comandbotton
cancellare un dato del record di riferimento alla riga del doppio clic?
Grazie
Autore
Articoli
Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
