Modifica riga



  • Modifica riga
    di garziagiuseppe data: 03/04/2014 12:45:52

    Ciao a tutti, non riesco a risolvere il seguente problema: Attraverso la LsitBox inserita nella form e popolata con i dati presenti sul foglio d'appoggio, seleziono una riga, ed eseguo delle modifice al testo agendo sulle textbox. Cliccando ul tasto modifica, dovrei poter inserire le moddifiche nella riga selezionata... invece mi modifica la riga selezionata... non capendo come.
    VI allego il file chiedendovi di testare il tasto modifica della form, e vi accorgerete che non va a modificare la riga selezionata.

    Sotto il codice del tasto modifica.
     
    Private Sub modifica_Click()
    
    Dim irisposta
    If TextBox1 = "" Then
    MsgBox ("Non hai selezionato nessuna voce"), Title:="Manca selezione"
    Exit Sub
    End If
    
    ActiveCell = TextBox1.Text
    ActiveCell.Offset(0, 1) = TextBox2.Text
    ActiveCell.Offset(0, 2) = TextBox3.Text
    ActiveCell.Offset(0, 3) = TextBox4.Text
    ActiveCell.Offset(0, 4) = TextBox5.Text
    ActiveCell.Offset(0, 5) = TextBox6.Text
    ActiveCell.Offset(0, 6) = TextBox7.Text
    ActiveCell.Offset(0, 7) = TextBox8.Text
    ActiveCell.Offset(0, 9) = TextBox9.Text
    
    MsgBox ("Modifica eseguita correttamente"), Title:="Modifica inserzione!"
    
    End Sub



  • di garziagiuseppe data: 03/04/2014 12:47:38

    Non riesco ad allegare il file... probabilmente per delle restrizioni che ho con il server dell'ufficio. Lo allego questa sera da casa.




  • di totygno71 (utente non iscritto) data: 03/04/2014 13:14:27

    cit "dovrei poter inserire le moddifiche nella riga selezionata... invece mi modifica la riga selezionata... "

    Non sei mica tanto chiaro saiiii???? ^_^



  • di garziagiuseppe (utente non iscritto) data: 03/04/2014 13:17:38

    è vero mi sono ingarbugliato.
     
    Ma sarà più chiaro quando questa sera allegherò il file.



  • di scossa data: 03/04/2014 13:58:03

    Direi che è stato chiarissimo: "Noio... volevam... volevàn savoir ... noi vogliamo sapere, per andare dove dobbiamo andare, per dove dobbiamo andare?" (cit. Totò e Peppino)

    Battute a parte il problema è: ActiveCell


    scossa's web site
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)



  • di garziagiuseppe data: 03/04/2014 15:08:16

    La domanda é (come avevo già scritto) incasinata.... ma la risposta?

    "...Battute a parte il problema è: ActiveCell ...."

    Cosa vuoi dire?



  • di Vecchio Frac data: 03/04/2014 15:26:40

    Significa che il codice che mostri va a modificare sempre e soltanto la cella corrente e le colonne ad essa adiacenti, la cella corrente è indicata appunto da "ActiveCell".
    Tu dici "...vi accorgerete che non va a modificare la riga selezionata" ma anche "Cliccando sul tasto modifica, dovrei poter inserire le modifiche nella riga selezionata... invece mi modifica la riga selezionata." ed è questa contraddizione che non si capisce bene :)

    Tu forse vuoi poter selezionare una riga dalla tua listbox, modificare una textbox (dell'userform, presumo) che ne aggiorna i valori, quindi riflettere il cambiamento all'interno del foglio.
    Ma potremo essere più precisi solo quando vedendo il file capiremo le tue intenzioni.





  • di garziagiuseppe data: 03/04/2014 15:43:27

    È tosta da spiegare... l'inserimento ha un comportamento strano. Quando seleziono la riga dalla ListBox, il cursore sul foglio di lavoro si posiziona correttamente nella colonna A e nella riga corrispondente alla selezione della ListBox. Poi vado a cambiare i valori nelle TextBox che si popolano in base alla selezione, e con il tasto modifica (a cui é abbinata la macro dell’evento click) dovrebbe aggiornarmi tutte le TextBox così come espresso nella macro. Invece succede una cosa stranissima difficile da spiegare. Ad esempio: voglio modificare alcuni valori nella riga 723 (che é l'ultima riga della lista) modifico alcuni valori e clicco sul tasto modifica. Non so come mai, ma mi inserisce i valori della riga 121 andandosi poi a posizionarsi sulla riga 121 sul foglio di appoggio. Vado a scorrere la lista fino alla riga che volevo inserire, e mi ritrovo la riga 121 perfettamente ricopiata. Stessa cosa succede se voglio aggiungere una nuova riga.... Ma come detto: con il file che vi allegherò potete testare voi e rendervi conto cosa succede. Io non riesco a spiegarmelo.

    Grazie per l'interesse



  • di garziagiuseppe data: 03/04/2014 16:52:24

    Ho allegato il file... attendo la vostra esperta valutazione.

    grazie



  • di scossa data: 03/04/2014 19:48:53

    Secondo me il problema è: ListBox1.RowSource = area in Private Sub UserForm_Initialize()

    Non puoi utilizzare RowSource per alimentare la listbox, altrimenti ogni volta che esegui le varie
    ActiveCell = TextBox1.Text
    ActiveCell.Offset(0, 1) = TextBox2.Text
    etc...

    scateni l'evento ListBox1_Click() ....

    scossa's web site
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di Garziagiuseppe (utente non iscritto) data: 03/04/2014 20:07:09

    Grazie dell'impatto SCOSSA... Io non sono un fenomeno in VBA, ma se non devo usare rowsource per popolare la listbox in quale altro modo possono popolarla?
    Altra cosa che non mi é chiaro, quando lancio la macro con l,evento click del tasto modifica, come posso scatenare l'evento click della listbox? Questo si aziona se clicca sulla listbox....
    Non mi é chiaro quale altra artenativa ho!



  • di scossa data: 03/04/2014 21:16:39

    Un modo:

    ListBox1.List = ThisWorkbook.Worksheets("inventario").Range(area).Value
    ComboBox1.List = Range("inventario!C5:C2000").Value




    scossa's web site
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)


     
    Private Sub UserForm_Initialize()
    Dim x
    Dim y
    Dim area
    x = Range("B4").CurrentRegion.Rows.Count + 5
    y = Range("B4").CurrentRegion.Columns.Count
    area = Range(Cells(5, 1), Cells(x, y)).Address
    'ListBox1.RowSource = area
    ListBox1.List = ThisWorkbook.Worksheets("inventario").Range(area).Value
    ComboBox1.List = Range("inventario!C5:C2000").Value
    End Sub



  • di garziagiuseppe (utente non iscritto) data: 04/04/2014 07:06:45

    Grazie Scossa... era li il problema.

    Mi scuso per l'espressione poco chiara nei precedenti post... stavo scrivendo con l'Ipad e il correttore automatico mi ha "corretto" delle parole in modo sbagliato.

    Grazie per l'attenzione, e prometto che in futuro starò più attento nell'esporre le problematiche.



  • di garziagiuseppe data: 04/04/2014 09:21:29

    Problema risolto