Come modificare un codice vba



  • Come modificare un codice vba
    di Verbo data: 26/07/2010

    Buongiorno a tutti, premesso di essere ignorante in materia ed il sottoriportato codice non è farina del mio sacco ho da chiedere un favore.

    ho il sottoriportato codice che mi permette di inserire i dati a partire dalla cella "c2".
    poichè ho l'esigenza di inserire prima della colonna "c" altre tre colonne, di fatto i dati che prima venivano inseriti sulla cella "c2" volgio che inziano ad inserirsi dalla cella "f2" come modifico il codice?
    nel mio piccolo ho intuito che devo modificare il punto del codice "for x=2", ma ho provato a mettere al posto del 2 il 4, ma non succede niente.
    qualcuno può aiutarmi?
    colgo l'occasione di salutare robiesse, è lui l'autore del coduice a cui devo infini ringraziamenti.

    grazie a chiunque vuole darmi una mano.
     
    Private Sub ComboBox4_Click()
        On Error Resume Next
        Cells.Find(ComboBox4.Text, , , , xlByColumns).Select
        Worksheets(ComboBox4.Text).Activate
    End Sub
    
    Private Sub ComboBox4_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        On Error Resume Next
        Cells.Find(ComboBox4.Text, , , , xlByColumns).Select
        Worksheets(ComboBox4.Text).Activate
    End Sub
    
    Private Sub ComboBox4_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        ComboBox4.Text = ""
    End Sub
    
    Private Sub CommandButton1_Click()
        If ComboBox1.Text = "" Or ComboBox2.Text = "" Then Exit Sub
        If ComboBox4.Text = "" Then Exit Sub
        N = TextBox2 - TextBox1
        For X = 2 To FineA * 8 Step 8
            If ComboBox1.Text = Worksheets(ComboBox4.Text).Cells(X, 1) Then
                If Worksheets(ComboBox4.Text).Cells(X, ComboBox2.Value + 2) <> "" Then
                    Risp = MsgBox("La cella non è vuota, vuoi salvare lo stesso?", 4372, "Attenzione!!!")
                    If Risp = 7 Then Exit Sub
                End If
                If TextBox2 = TextBox1 Then
                    Risp = MsgBox("   I valori delle due celle sono identici!!!   ", 69632, "Attenzione!!!")
                    Exit Sub
                ElseIf TextBox2 < TextBox1 Then
                    Risp = MsgBox("   I valori delle due celle sono scambiati!!!   ", 69632, "Attenzione!!!")
                    Exit Sub
                ElseIf TextBox3 = "" Then Worksheets(ComboBox4.Text).Cells(X + 3, ComboBox2.Value + 2) = ""
                ElseIf TextBox3 < TextBox1 Or TextBox3 > TextBox2 Then
                    Risp = MsgBox("   Il minuto della rete è sbagliato!!!   ", 69632, "Attenzione!!!")
                    Exit Sub
                ElseIf TextBox4 = "" Then Worksheets(ComboBox4.Text).Cells(X + 4, ComboBox2.Value + 2) = ""
                ElseIf TextBox5 = "" Then Worksheets(ComboBox4.Text).Cells(X + 5, ComboBox2.Value + 2) = ""
                ElseIf TextBox4 < TextBox1 Or TextBox4 > TextBox2 Then
                    Risp = MsgBox("   Il minuto dell'ammonizione è sbagliato!!!   ", 69632, "Attenzione!!!")
                    Exit Sub
                ElseIf TextBox5 < TextBox1 Or TextBox5 > TextBox2 Then
                    Risp = MsgBox("   Il minuto dell'espulzione è sbagliato!!!   ", 69632, "Attenzione!!!")
                    Exit Sub
                End If
                Worksheets(ComboBox4.Text).Cells(X, ComboBox2.Value + 2) = TextBox3.Value
                If TextBox3.Value = 0 Then Worksheets(ComboBox4.Text).Cells(X, ComboBox2.Value + 2) = 0
                Worksheets(ComboBox4.Text).Cells(X + 1, ComboBox2.Value + 2) = N
                Worksheets(ComboBox4.Text).Cells(X + 2, ComboBox2.Value + 2) = TextBox1.Value
                Worksheets(ComboBox4.Text).Cells(X + 3, ComboBox2.Value + 2) = TextBox2.Value
                Worksheets(ComboBox4.Text).Cells(X + 4, ComboBox2.Value + 2) = TextBox4.Value
                Worksheets(ComboBox4.Text).Cells(X + 5, ComboBox2.Value + 2) = TextBox5.Value
                Worksheets(ComboBox4.Text).Cells(X + 7, 2) = ComboBox3.Value
                If Worksheets(ComboBox4.Text).Cells(X + 1, ComboBox2.Value + 2) <> "" Then Worksheets(ComboBox4.Text).Cells(X + 6, ComboBox2.Value + 2) = "X"
            End If
        Next
        TextBox1.Text = 0
        TextBox2.Text = 90
        TextBox3.Text = ""
        TextBox4.Text = ""
        TextBox5.Text = ""
        ActiveSheet.Range("A:AP").Columns.AutoFit
    End Sub
    
    Private Sub CommandButton2_Click()
        If ComboBox4.Text = "" Then Exit Sub
        Worksheets(ComboBox4.Text).Range("A:AP").Columns.AutoFit
        Range("A1").Select
        Worksheets("Nomi").Activate
        Unload Me
    End Sub
    
    Private Sub CommandButton3_Click()
        Dim Pippo As Integer
        If ComboBox4.Text = "" Then Exit Sub
        For xx = 1 To 1000
            If Worksheets(ComboBox4.Text).Cells(xx, 1) = ComboBox1.Value Then Exit For
        Next
        ComboBox3.Value = Worksheets(ComboBox4.Text).Cells(xx + 7, 2).Value
        Pippo = Worksheets(ComboBox4.Text).Cells(xx + 6, 100).End(xlToLeft).Column
        ComboBox2.Text = Worksheets(ComboBox4.Text).Cells(xx + 6, Pippo).End(xlToLeft).Column - 1
    End Sub
    
    Private Sub UserForm_Activate()
        Dim A As String
        Dim B As String
        On Error Resume Next
        A = Year(Now)
        B = Right(A, 2) + 1
        
        TextBox1.Text = 0
        TextBox2.Text = 90
        TextBox3.Text = ""
        TextBox4.Text = ""
        TextBox5.Text = ""
        ComboBox1.Text = "2008/09" 'A & "/0" & B
        ComboBox2.Text = 5
        ComboBox3.Value = Worksheets(ComboBox4.Text).Cells(xx + 7, 2)
        ComboBox3.RowSource = ("Dati!D1:D" & Fine)
        ComboBox4.RowSource = ("NOMI!A2:A" & FineN)
    End Sub
    


  • Il file
    di Eddy1976 data: 26/07/2010

    Ciao!
    visto con ho tutte le info a cui fa riferimento il codice (probabilmente mi sono perso le prime discussioni)riusciresti ad allegare il file excel?



  • di Verbo data: 26/07/2010

    Inviato il file di excel



  • di Eddy1976 data: 26/07/2010

    Quando parli di cella c2 e f2 immagino che parli delle celle riferite ai fogli dei vari giocatori, quindi hai nelle celle a1="anno", b1=una casella di selezione,c1="1",ecc...
    giusto?


  • Soluzione
    di Eddy1976 data: 26/07/2010

    Ciao,
    prova con le modifiche che ti propongo.
    e' una soluzione molto base e impegnando un po' di tempo si potrebbe renderlo indipendente dalla quantità di colonne che hai prima della "cella c2".
     
        For X = 2 To FineA * 8 Step 8
            If ComboBox1.Text = Worksheets(ComboBox4.Text).Cells(X, 1) Then
                If Worksheets(ComboBox4.Text).Cells(X, ComboBox2.Value + 5) <> "" Then
                    Risp = MsgBox("La cella non è vuota, vuoi salvare lo stesso?", 4372, "Attenzione!!!")
                    If Risp = 7 Then Exit Sub
                End If
                If TextBox2 = TextBox1 Then
                    Risp = MsgBox("   I valori delle due celle sono identici!!!   ", 69632, "Attenzione!!!")
                    Exit Sub
                ElseIf TextBox2 < TextBox1 Then
                    Risp = MsgBox("   I valori delle due celle sono scambiati!!!   ", 69632, "Attenzione!!!")
                    Exit Sub
                ElseIf TextBox3 = "" Then Worksheets(ComboBox4.Text).Cells(X + 3, ComboBox2.Value + 5) = ""
                ElseIf TextBox3 < TextBox1 Or TextBox3 > TextBox2 Then
                    Risp = MsgBox("   Il minuto della rete è sbagliato!!!   ", 69632, "Attenzione!!!")
                    Exit Sub
                ElseIf TextBox4 = "" Then Worksheets(ComboBox4.Text).Cells(X + 4, ComboBox2.Value + 5) = ""
                ElseIf TextBox5 = "" Then Worksheets(ComboBox4.Text).Cells(X + 5, ComboBox2.Value + 5) = ""
                ElseIf TextBox4 < TextBox1 Or TextBox4 > TextBox2 Then
                    Risp = MsgBox("   Il minuto dell'ammonizione è sbagliato!!!   ", 69632, "Attenzione!!!")
                    Exit Sub
                ElseIf TextBox5 < TextBox1 Or TextBox5 > TextBox2 Then
                    Risp = MsgBox("   Il minuto dell'espulzione è sbagliato!!!   ", 69632, "Attenzione!!!")
                    Exit Sub
                End If
                Worksheets(ComboBox4.Text).Cells(X, ComboBox2.Value + 5) = TextBox3.Value
                If TextBox3.Value = 0 Then Worksheets(ComboBox4.Text).Cells(X, ComboBox2.Value + 5) = 0
                Worksheets(ComboBox4.Text).Cells(X + 1, ComboBox2.Value + 5) = N
                Worksheets(ComboBox4.Text).Cells(X + 2, ComboBox2.Value + 5) = TextBox1.Value
                Worksheets(ComboBox4.Text).Cells(X + 3, ComboBox2.Value + 5) = TextBox2.Value
                Worksheets(ComboBox4.Text).Cells(X + 4, ComboBox2.Value + 5) = TextBox4.Value
                Worksheets(ComboBox4.Text).Cells(X + 5, ComboBox2.Value + 5) = TextBox5.Value
                Worksheets(ComboBox4.Text).Cells(X + 7, 7) = ComboBox3.Value
                If Worksheets(ComboBox4.Text).Cells(X + 1, ComboBox2.Value + 5) <> "" Then Worksheets(ComboBox4.Text).Cells(X + 6, ComboBox2.Value + 5) = "X"
            End If
        Next
    



  • di Verbo data: 26/07/2010

    Grazie funziona bene
    non ho capito il discorso del tempo
    cmq se hai soluzioni utili per snellire il mio progetto sono tutto orecchi.
    cmq ancora grazie



  • di Verbo data: 27/07/2010

    Eddy scusa ancora, ieri inserivo un solo dato e tutto sembrava funzionare alla perfezione.
    oggi invece ho inziato a inserire tutti i dati relativi alle diverse giornate ed ho scoperto una cosa strana ovvero io indico la giornata 1 poi modifico l'inizio e fine e correttametne i dati me li ritrovo al loro posto nelle rispettive colonne "f", e tutto questo funziona fino alla terza giornata, quando vado a inserieri dati delal 4 giornata succede una copsa strana ovvero tutti idati inseriti relativi alla quarta giornata vengono regolarmetne e correttamente inseriti nella relativa colonna, mentre mi cancella il dato che avevo inserito nelal texbox 2 relativo alla prima giornata e tutto questo poi si ripete per le successive giornate ovvero inserisco la 5 giornata tutti i dati ad essa relativi vengono inseriti al loro posto , ma contemporaneamente mi cancella il dato inserito nelal texbox2 delal 2 giornata.
    come mai?
    spero riesci a darmni una delucidazione perchè per il resto funziona alla grande.



  • di Verbo data: 27/07/2010

    Eddy io ho cercato di capirci qualcosa, ma niente, ho solo notato una cosa ovvero che il problema si presenta se non indico il minuto della rete ovvero non metto niente nella textbox corrispondente.
    qualora in tutte le texbox indico dei valori il probelma nn sussiste ovvero non mi cancellaniente nelle celel precedenti

    inoltre per chiarezza e non so se questo sia la causa ho fatto una piccola modifica al codice che miavevi postato ovvero se seguivo alla lettera le tue istruzioni il nome della squadra non me la scriveva nelal colonna "b", ma ovviamente tre colonne dopo ed anche se indicavo la rete mi veniva scritta una colonna prima, per cui ho provato a modificare questa tua parte di codice
    worksheets(combobox4.text).cells(x + 7, 7) = combobox3.value

    dove anzichè 7 ho messo 2

    e il problema l'ho risolto ovvero mi indica la squadra nella colonna "b" e il minuto della marcatura al posto giusto, invece ho notato che si è presentato il problema che ti ho descritto prima, non so se le due cose sono collegate. spero riescia darmi qualche chiarimento.
    grazie



  • di Eddy1976 data: 28/07/2010

    Dammi un po' di tempo che ci guardo. comunque le due cose non sono collegate tra loro. il problema che lamenti secondo me è dovuto dalla serie di if e else if che probabilmente saltano qualche pezzo.



  • di Verbo data: 28/07/2010

    Tranquillo eddy prenditi tutto il tempo che ti serve anche perchè dal 1 al 15 agosto sono in ferie.
    grazie comunque per l'interessamento



  • di Verbo data: 23/08/2010

    Ciao eddy non per essere insistente, ma hai qualche suggerimetno a proposito del problema, grazie