listbox aggiornare valore di una colonna

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
shadi1978
00martedì 13 marzo 2018 16:00
Ciao a tutti,

ho allegato un'immagine per semplificare la spiegazione.

1.Con il pulsante "Genera Lista" importo i dati nella listbox (10colonne)

2.nella textbox SWIFT AMOUNT inserisco un importo arbitrario.

3.se seleziono una riga dalla lista con evento ListBox change() nella textbox UNPAID (quella cerchiata di rosso con lettera A) si aggiorna il valore: SWIFT - Valore(colonna importi)
Questo valore viene aggiornato ogni qualvolta selezioni una riga della listbox.

4.avrei bisogno di copiare il valore rimasto nella UNPAID (cerchio rosso A) nell colonna con cerchio rosso B

questo possibilmente con evento change. E' fattibile?

Spero di essere spiegato bene, grazie mille
GiuseppeMN
00martedì 13 marzo 2018 19:44
Buona sera, Shadi;
capisco la riservatezza del File, ma con una immagine non andiamo molto lontano.

È come se in un ristorante tu ordinassi un piatto di spaghetti al pomodoro e il Cameriere ti portasse ... la foto di un piatto di spaghetti al pomodoro fumante.

Per poterti proporre una possibile soluzione, dovrei ricostruire il tuo File; questo, per mè, è improponibile.



Con amicizia.

Buona serata.

Giuseppe
shadi1978
00mercoledì 14 marzo 2018 09:14
Ciao Giuseppe,

immaginavo ed hai ragione.... speravo il problema fosse più e magari risolvibile così.

Ti ho allegato il file, grazie mille
GiuseppeMN
00mercoledì 14 marzo 2018 12:12
Buona giornata, Shadi;
grazie della Tua Attenzione.

In questo momento sono fuori casa, appena rientro qurderò volentieri il tuo File.



A presto.

Giuseppe
alfrimpa
00mercoledì 14 marzo 2018 16:15
Ciao Shadi

In attesa della risposta di Giuseppe (che saluto) vedo che in userform_initialize c'è questo codice

vb
i = "List x Forum"      'per prova
Set wb2 = Workbooks(i)


puoi spiegare a cosa serve?

Se si tenta di eseguire la form si riceve un errore di run-time 9 (Indice non incluso nell'intervallo) perché non esiste nessun workbook denminato "List x Forum"
shadi1978
00mercoledì 14 marzo 2018 16:38
Ciao Giuseppe,

intanto infinitamente grazie per la disponibilità mostrata.

Dal momento che darai un'occhiata al file potresti verificare perchè da quando clikko REGISTRA, il dato importato nel foglio excel in colonna J, lo porta come testo e nonostante il numberformat non riesco a farlo cambiare in valuta (dovrebbe essere la stessa della cella attigua in colonna I) [SM=x423039] [SM=x423023]

Grazie mille ancora, spero tu riesca ad aiutarmi
GiuseppeMN
00mercoledì 14 marzo 2018 16:39
Buonpomeriggio, Shadi;
per riuscire a visualizzare un UserForm evitando:
-     Errore di run-time '9':     Indice non incluso nell'intervallo
, ho dovuto bypassare UserForm_Initialize.

Sicuramente nel tuo File originale ci sono dei:
-    Worksheet
e/o
-    Workbook
che non sono riportati nel File che gentilmente hai allegato in Risposta #3 e questo potrebbe generare l'Errore di cui sopra.

Ciò premesso, in queste condizioni, non credo di riuscire ad analizzare le funzioni di UserForm per poterti proporre una soluzione accettabile; credo che questa volta dovrò passare la mano a qualche Utente più qualificato.




Buon Lavoro

Buona serata.

Giuseppe
shadi1978
00mercoledì 14 marzo 2018 16:46
Ciao Alfrimpa,

ho visto adesso la tua risposta, quella riga di codice è impostata perchè questo è lo sto preparando su un file in particolare ma una volta completato verrò inserito nel file excel madre che mi gestirà 2 directory contenenti all'incirca 50 file clienti diversi.

i = "List x Forum"

era il nome del file che avevo dato quando lo ho allegato alla discussione. Ora ho provato a fare download ed in effetti il nome del file viene modificato....

dove c'è "i=" bisognerebbe scrivere il nome del file

ce ne sono alcune nel file (il file probabilmente risulterà ripetitivo in alcune sue parti, ma non so come fare diversamente):
1^ riga 21
2^ riga 100
3^ riga 182
4^ riga 287
5^ riga 374

grazie
GiuseppeMN
00mercoledì 14 marzo 2018 16:53
Leggo solo ora la Risosta #5 di Alfredo, che saluto, e la tua Risposta #6

Vorrei solo aggiungere che anche premendo il Pulsante "REGISTRA" o il Pulsante "Genera LISTA", viene riproposto:
-     Errore di run-time '9':     Indice non incluso nell'intervallo


Giuseppe
shadi1978
00mercoledì 14 marzo 2018 16:56
Ho risposto in merito all'errore di runtime in risposta #8
shadi1978
00giovedì 22 marzo 2018 15:53
Ciao,

non riuscite a darmi una mano anche qui...
sono bloccato

grazie
GiuseppeMN
00giovedì 22 marzo 2018 19:55
Buona sera, Shadi;
ti leggo solo ora:

Non so se può esserti utile, ho provato a sostituire l'istruzione:
i = "List x Forum" 

con:
i = ActiveWorkbook.Name 


Sembra funzionare; altri nomi di File non sono riuscito a trovarli.



A disposizione

Buona serata.

Giuseppe
shadi1978
00martedì 27 marzo 2018 15:49
Grazie Giuseppe,

il suggerimento che mi hai dato serve per far girare il codice di esempio che ho caricato sul forum.

La mia domanda è quella posta all'apertura della discussione, adesso che il codice funziona riusciresti a darmi una mano a risolvere il mio problema di aggiornamento della lista (#1) del formato (risposta #6)?

grazie grazie mille
GiuseppeMN
00martedì 27 marzo 2018 19:05
Buona sera, Shadi.
Ho cercato di interpretare quello che desideri ottenere [SM=x423071] (purtroppo, l'età è quella che è e, di certo, non aiuta! [SM=x423023] )

Quello che posso dirti è che i Form rendono il Valore inserito come "Stringa"; credo sia necessario trasformare il Valore da "Stringa" a "Numero con decimali".

Per fare ciò ho utilizzato due Variabili; vedi se può esserti utile il seguente Codice VBA:
Private Sub LISTA_Change()
Dim Vlr As Double, Unp As Double
    SWamount = Me.SWamount.Value
        For i = 1 To Me.LISTA.ListCount
            If Me.LISTA.Selected(i - 1) = True Then
                If InStr(Me.LISTA.List(i - 1, 1), "CN") > 0 Then
                    SWamount = SWamount + Abs(Me.LISTA.List(i - 1, 7))
                Else
                    If Tot = "" Then
                        Tot = Me.LISTA.List(i - 1, 7)
                    Else
                        Tot = Tot + Me.LISTA.List(i - 1, 7)
                    End If
                End If
                r = i - 1
            End If
        Next i
        Vlr = SWamount
    Unp = Tot - Vlr
        Me.Unpaid.Value = Unp
    If Me.Unpaid.Value < 0 Then
        Me.Comment.Value = "Credito disponibile"
    Else
        Me.Comment.Value = "Importo rimanente da saldare su fatt. n° " & Me.LISTA.List(r, 6)
    End If
End Sub



Buona serata.

Giuseppe
GiuseppeMN
00mercoledì 28 marzo 2018 11:36
Buona giornata, Shadi;
credo sia necessario trasformare il Valore da "Stinga" a "Numero con decimali" anche nel Codice VBA:
- Private Sub cmdREGISTRA_Click()

Anche in questo caso ho utilizzato una Variabile; vedi se può esserti utile il seguente Codice VBA:
Private Sub cmdREGISTRA_Click()
Dim sh, sh1, sh2, sh3 As Worksheet
Dim wb, wb1, wb2 As Workbook
Dim cl3, cl2, cl2a, cl2b, rng3, rng2, rng2a, rng2b As Range

Dim i
Dim Vlr As Double

Application.ScreenUpdating = False
Application.EnableEvents = False

    i = ActiveWorkbook.Name
    Set wb2 = Workbooks(i)
    Set sh2 = wb2.Worksheets("STORICO")
    Set sh3 = wb2.Worksheets("FATTURE APERTE")
        For i = Me.LISTA.ListCount - 1 To 0 Step -1
            If Me.LISTA.Selected(i) = True And InStr(Me.LISTA.List(i, 0), "CN") = 0 Then
                esp = Me.ComboEXP.Value
                tfa = Me.LISTA.List(i, 0)
                Set rng3 = sh3.Range("A:A")
                    With rng3
                        Set cl3 = .Find(tfa, LookIn:=xlValues, lookat:=xlWhole)
                        If Not cl3 Is Nothing Then
                            r3 = cl3.Row
                            If c <> 1 Then
                                Vlr = Me.Unpaid.Value
                                    sh3.Cells(r3, 9).Value = Vlr
                                        c = 1
                                    sh3.Cells(r3, 8).Font.Strikethrough = True
                            Else
                                sh3.Cells(r3, 8).Font.Strikethrough = True
                            End If
                        End If
                    End With
            ElseIf Me.LISTA.Selected(i) = True And InStr(Me.LISTA.List(i, 0), "CN") > 0 Then
                tfa = Me.LISTA.List(i, 0)
            Set rng3 = sh3.Range("A:A")
                With rng3
                    Set cl3 = .Find(tfa, LookIn:=xlValues, lookat:=xlWhole)
                    If Not cl3 Is Nothing Then
                        r3 = cl3.Row
                        sh3.Cells(r3, 8).Font.Strikethrough = True
                    End If
                End With
                    End If
        Next i
            c = ""
    Set wb2 = Nothing
    Set sh2 = Nothing
    Set sh3 = Nothing
    Set rng3 = Nothing
    Set cl3 = Nothing
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub



Buon Lavoro.

Giuseppe
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 06:48.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com