Snellire codice vba



  • Snellire codice vba
    di iTavix (utente non iscritto) data: 22/11/2016 15:55:06

    Ciao, ho un problema con un pc che ha solo 2 Gb di ram e nel quale non riesco a fare girare del codice che invece altrove gira benissimo...anche se io sono decisamente alle prime armi e quindi mi capita di ripetere spesso delle sub..nella fattispecie qualcuno saprebbe dirmi se è possibile evitare di ripetere 20 volte questa sub?:

    Private Sub ComboBox2_Change()
    Dim i As Integer
    Dim uriga As Long
    Dim wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("Foglio1")
    uriga = wks.Range("A" & Rows.Count).End(xlUp).Row
    For i = 1 To uriga
    If wks.Range("A" & i) = ComboBox2 Then
    TextBox2 = wks.Range("B" & i)
    End If
    Next
    If ComboBox2 <> "" Then TextBox112 = 1
    ...vi sarò grato per quanto riuscirete a fare...grazie



  • di alfrimpa data: 22/11/2016 16:02:21

    Ciao iTavix

    Non assicurandoti niente ti direi di provare ad allegare il tuo file spiegando bene quel che vuoi fare/ottenere.

    A quanto ne so non ho mai sentito che del codice VBA non girasse un un pc dalle risorse insufficienti (ma può darsi pure che mi sbagli).

    In teoria si potrebbe scrivere un unico codice valido per tutte le combobox ma per far questo occorre utilizzare i moduli di classe che sono un argomento "avanzato" dell'utilizzo del VBA non alla portata di tutti.

    Alfredo




  • Snellire codice vba
    di iTavix (utente non iscritto) data: 22/11/2016 16:12:49

    Ciao e grazie per l'interessamento...per quanto riguarda il mancato funzionamento del codice...non so che dirti...gira dappertutto tranquillamente eccetto in quel pc...il file è piuttosto complesso e se dovessi allegare solo un estratto non saprei cosa allegare in quanto l'errore è generico e non fa riferimento a nulla in particolare...viene fuori un messaggio con la dicitura errore irreparabile e dopo la chiusura forzata di questo viene fuori memoria esaurita..ed il file non si riesce nemmeno a salvarlo..ho visto qualcosa riguardo i moduli di classe e capisco benissimo che necessitano ben più di una semplice infarinatura...avevo postato quella sub perchè è una di quelle che ripeto e volevo capire se era possibile fare una sorta di "ciclo for" per evitare di ripeterla..con la sub in particolare faccio si che nelle due text accanto alla combo una si popoli con un valore relativo a quello della combo stessa e l'altra invece mi serve come valore d'appoggio per contare le combo piene....



  • di alfrimpa data: 22/11/2016 16:23:51

    Non saprei che dirti.

    Prova a "spezzettare" il problema ad esempio facendo girare il codice su 3 combo anziché 20 e se dovesse funzionare man mano aumenti il numero dei controlli.

    In generale quando si ha un problema di "memoria esaurita" è perché il codice in qualche punto va in loop saturando appunto la memoria ma se tu dici che su altri pc funziona non dovrebbe trattarsi di questo.

    Ma questo è l'unico pc che non funziona? Magari si è sputtanato Excel boh.

    Son tutte prove che dovresti fare.

    Alfredo




  • Snellire codice vba
    di iTavix (utente non iscritto) data: 22/11/2016 16:26:20

    ...potrebbe essere un problema del pc o piuttosto di excel...anche se altri file xslm li fa girare..proverò comunque a fare delle prove...grazie comunque...