Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

PROGRAMMA excel per gestione alunni

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

PROGRAMMA excel per gestione alunni

Postdi ilpince » 25/07/14 15:05

Buon pomeriggio a tutti, sono nuovo di questo forum.
Avrei un problema: Io ho studiato C++ a scuola in passato, ma non VB, quindi riesco a capire qualche azione che può compiere un dato programma, ma non i comandi.
Torniamo a noi, Avevo bisogno di creare un programma su excel che, alla pressione di un tasto, lui mi facesse inserire un nuovo allievo, mi creasse una nuova scheda con il nome di tale allievo (usando un modulo di scheda già impostato) e mi inserisse nella schermata principale il nome del nuovo allievo (mettendomi in ordine tutti gli altri gia esistenti/già inseriti).
Ne ho trovato uno già fatto, però ora la mia necessità è quella di avere il nome della persona inserita anche in un altro foglio ("presenze"), dove sono segnate le presenze di tutti. Avevo bisogno però che quando la nuova persona veniva inserita, il programma mi ordinasse direttamete tutte le righe in ordine alfabetico. Per farvela più breve vi incollo tutto il codice completo:
Codice: Seleziona tutto
Public Sub mNuovoFoglio()
   
    Dim wk As Workbook
    Dim v As Variant
   
    v = UCase(Application.InputBox("Inserire il nome del nuovo allievo."))
    If v = "" Or v = False Then
        MsgBox "Operazione annullata"
        Exit Sub
    End If
   
    Set wk = ThisWorkbook
   
    On Error Resume Next
    With wk
        .Worksheets("MODELLO").Visible = xlSheetVisible
        .Worksheets("MODELLO").Copy After:=Sheets(.Sheets.Count)
        ActiveSheet.Name = v
        If Err.Number <> 0 Then
            Application.DisplayAlerts = False
            ActiveSheet.Delete
            Application.DisplayAlerts = True
            MsgBox "Nome foglio già presente, operazione annullata."
            Set wk = Nothing
            Exit Sub
        End If
       
    End With
   
    Call mOrdinaMenu
    Call mOrdinaFogli(v)
    ThisWorkbook.Worksheets("MODELLO").Visible = xlSheetVeryHidden
   
    Set wk = Nothing
   
End Sub

Public Sub mOrdinaMenu(Optional ByVal s As Variant)

    Dim shMenu As Worksheet
    Dim shPresenze As Worksheet
    Dim lRiga As Long
    Dim lng As Long
    Dim Sh As Worksheet
    Dim lCont As Long
   
    Set shMenu = ThisWorkbook.Worksheets("Menu")
    Set shPresenze = ThisWorkbook.Worksheets("Presenze")
   
    On Error Resume Next
   
    With shMenu
       
        Application.ScreenUpdating = False
        .Select
        .Range("A1").Select
        .Hyperlinks.Delete
       
        lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        .Range("A2:A" & lRiga).Value = ""
       
        lCont = 2
        For Each Sh In ThisWorkbook.Worksheets
       
            If Sh.Name <> s And Sh.Name <> "MODELLO" Then
                .Cells(lCont, 1).Value = Sh.Name
                lCont = lCont + 1
            End If
        Next
       
        .Range("A1:A" & lCont).Sort _
            Key1:=Range("A2"), _
            Order1:=xlAscending, _
            Header:=xlYes, _
            OrderCustom:=1, _
            MatchCase:=False, _
            Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
       
        For lng = 2 To lCont
            .Hyperlinks.Add Anchor:=.Range("A" & lng), _
                Address:="", _
                SubAddress:="'" & .Range("A" & lng).Value & "'!A1", _
                TextToDisplay:=.Range("A" & lng).Value
        Next
           
        Application.ScreenUpdating = True
           
    End With
   
   
   
    On Error Resume Next
   
    With shPresenze
       
        Application.ScreenUpdating = False
        .Select
        .Range("A1").Select
        .Hyperlinks.Delete
       
        lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        .Range("A2:A" & lRiga).Value = ""
       
        lCont = 2
        For Each Sh In ThisWorkbook.Worksheets
       
            If Sh.Name <> s And Sh.Name <> "MODELLO" Then
                .Cells(lCont, 1).Value = Sh.Name
                lCont = lCont + 1
            End If
        Next
       
        .Range("A1:A" & lCont).Sort _
            Key1:=Range("A2"), _
            Order1:=xlAscending, _
            Header:=xlYes, _
            OrderCustom:=1, _
            MatchCase:=False, _
            Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
       
        For lng = 2 To lCont
            .Hyperlinks.Add Anchor:=.Range("A" & lng), _
                Address:="", _
                SubAddress:="'" & .Range("A" & lng).Value & "'!A1", _
                TextToDisplay:=.Range("A" & lng).Value
        Next
           
        Application.ScreenUpdating = True
           
    End With
   
    Set shPresenze = Nothing
    Set shMenu = Nothing
   
End Sub


Public Sub mOrdinaFogli(Optional ByVal f As String)

On Error GoTo RigaErrore

    Dim NomiFogli() As String
    Dim lContaFogli As Long
    Dim lng As Long
   
    Application.ScreenUpdating = False
   
    lContaFogli = Worksheets.Count
   
    ReDim NomiFogli(1 To lContaFogli)
    For lng = 1 To lContaFogli
        NomiFogli(lng) = Worksheets(lng).Name
    Next
   
    Call mOrdina(NomiFogli)
   
    For lng = 1 To lContaFogli
        Worksheets(NomiFogli(lng)).Move _
            Before:=Worksheets(lng)
    Next
   
    With ThisWorkbook
        .Worksheets("MENU").Move Before:=Sheets(1)
        .Worksheets("MODELLO").Move Before:=Sheets(1)
        If f <> "" Then
            .Worksheets(f).Select
        End If
    End With
   
RigaChiusura:
    Application.ScreenUpdating = True
    Exit Sub
   
RigaErrore:
    MsgBox Err.Number & vbNewLine & Err.Description
    Resume RigaChiusura
   
End Sub


Public Sub mOrdina(ByRef sList() As String)

    Dim lPrimo As Long
    Dim lUltimo As Long
    Dim lx As Long
    Dim ly As Long
    Dim sTemp As String
   
    lPrimo = LBound(sList)
    lUltimo = UBound(sList)
   
    For lx = lPrimo To lUltimo - 1
        For ly = lx + 1 To lUltimo
            If sList(lx) > sList(ly) Then
                sTemp = sList(ly)
                sList(ly) = sList(lx)
                sList(lx) = sTemp
            End If
        Next
    Next
   
End Sub

Public Sub mEliminaFoglioAttivo()
    Dim lRisposta As Long
    lRisposta = MsgBox("Eliminare il foglio: " & _
        ActiveSheet.Name & "?", vbYesNo + vbQuestion, _
        "Attenzione!")
    If lRisposta = vbYes Then
        ActiveSheet.Delete
    End If
End Sub

Grazie mille ragazzi!!


EDIT Flash: Al fine di rendere più leggibile un post contenente righe codice, è necessario l'uso del Tag "Code" che si trova nella parte superiore della finestra dell'editor
Windows 7 + Pacchetto Microsoft Office 2007
ilpince
Utente Junior
 
Post: 17
Iscritto il: 25/07/14 14:54

Sponsor
 

Re: PROGRAMMA excel per gestione alunni

Postdi Flash30005 » 25/07/14 23:55

Ciao Ilpince e benvenuto nel Forum
penso sia opportuno l'invio, da parte tua, del file invece che il codice macro funzionante in una struttura di fogli come solo tu hai.

ciao.
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: PROGRAMMA excel per gestione alunni

Postdi ricky53 » 25/07/14 23:56

Ciao,
prima di tutto benvenuto nel nostro forum anche da parte mia.



Che versione di Office utilizzi. Dovresti scriverlo nella tua firma in modo che in ogni tuo intervento si vedrà subito la versione utilizzata.


Anch'io, come Flash, ti chiedo di allegare un file per agevolarci nel trovare una soluzione e nelle prove che faremo
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: PROGRAMMA excel per gestione alunni

Postdi ilpince » 28/07/14 13:53

Vero, firma modificata. ora invio il file, grazie mille in anticipo

http://www.filedropper.com/elencaordinafogli
Windows 7 + Pacchetto Microsoft Office 2007
ilpince
Utente Junior
 
Post: 17
Iscritto il: 25/07/14 14:54

Re: PROGRAMMA excel per gestione alunni

Postdi ricky53 » 28/07/14 15:05

Caio,
puoi descrivere in modo più dettagliato la tua esigenza?


Nel foglio "Presenze" trovo riportati, in colonna "A", i nomi "AA", "Presenze" e "ZA". Secondo me non dovrebbero esserci.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: PROGRAMMA excel per gestione alunni

Postdi ilpince » 28/07/14 20:05

Si ciao, il foglio "PRESENZE" lo utilizzo per segnare se il ragazzo è presente o meno. nella colonna "A" ci sono tutti i nomi dei ragazzi, compresi "AA", "ZA" e "PRESENZE" che però come hai sottolineato tu non dovrebbero esserci. Il problema è che se elimini quelle celle e inserisci un nuovo ragazzo dal foglio "MENU", il ragazzo verrà anche inserito nel foglio presenze nella colonna "A", la colonna "A" verrà messa in ordine alfabetico (cosa sbagliata perchè anche le colonne "B","C",ecc devono essere ordinate rispetto a "A") e "AA", "ZA" e "PRESENZE" ri compariranno....però non dovrebbero ricomparire...diciamo che non dovrebbero nemmeno esistere nel foglio presenze (anche se penso che "AA"e "ZA" servano per poter mettere in ordine alfabetico tutti i valori
Windows 7 + Pacchetto Microsoft Office 2007
ilpince
Utente Junior
 
Post: 17
Iscritto il: 25/07/14 14:54

Re: PROGRAMMA excel per gestione alunni

Postdi ricky53 » 29/07/14 00:36

ciao,
adattare del codice reperito in rete e' quasi sempre dispendioso e poco produttivo specialmente se non si ha chiaro come lavora. il mio consiglio e':

spiegaci in dettaglio la tua esigenza e vedremo come ottenere quello che ti occorre adattando il codice che e' nel file o scrivendo del codice nuovo.

Il foglio 'MODELLO' va bene cosi' come e' nel file?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: PROGRAMMA excel per gestione alunni

Postdi Flash30005 » 29/07/14 01:18

Se devi ordinare il foglio "Presenze" come richiesto nello stesso foglio puoi usare questa macro che non ha il problema da te riscontrato con la macro esistente nel file

Codice: Seleziona tutto
Sub OrdinaPresenze()
UR = Worksheets("PRESENZE").Range("A" & Rows.Count).End(xlUp).Row
    ActiveWorkbook.Worksheets("PRESENZE").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("PRESENZE").Sort.SortFields.Add Key:=Range("A2:A10" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("PRESENZE").Sort
        .SetRange Range("A1:CS" & UR)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub


Mi dedicherò agli altri quesiti dopo aver letto con calma la tua esigenza
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: PROGRAMMA excel per gestione alunni

Postdi ricky53 » 29/07/14 12:26

Ciao,
è chiaro che il buon codice di Flash va a sostituire il codice che ordina i dati nelle tue macro !!!

In soldoni DEVI ELIMINARE, nelle tue macro, le istruzioni che ordinano i dati nel foglio "PRESENZE"
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: PROGRAMMA excel per gestione alunni

Postdi ilpince » 29/07/14 16:10

Grazie, sisi ricky53 era chiaro che andava sostituito... in soldoni, cosa deve o dovrebbe fare il programma?
- Avere una pagina "MODELLO", con il modello del foglio per la registrazione dei nuovi ragazzi
- Avere una pagina "MENU" dove grazie all'ausilio di un pulsante (come già presente) io possa inserire nuovi fogli con il nome dei ragazzi( come nome foglio) e che ad ogni inserimento vengano inseriti dei collegamenti al foglio appena inserito con il nome del ragazzo appena inserito, in ordine alfabetico, nella colonna "A" del "MENU"
- Avere una pagina "PRESENZE" dove ci dovranno essere tutte le persone con i relativi collegamenti ad esse come nel "MENU", ma con la particolarità che io segnerò le presenze giornaliere di ogni ragazzo dalla colonna "B" alla colonna "CS" e che quindi , ogni volta che inserirò un nuovo ragazzo, questo dovrà comparire anche in questo foglio, in ordine alfabetico, ma che tutte le presenze già segnate per altri ragazzi rimangano collegate agli altri (come se selezionassi le colonne dalla "A" alla "CS" e le ordinassi in maniera crescente in base alla colonna "A")
- SE ci fosse la possibilità, avere una pagina "RESOCONTO", il cui funzionamento è uguale al foglio "PRESENZE", solo che al posto delle date , avrò dei valori che inserisco accanto ad ogni nome di ogni ragazzo e che quindi dovrà sempre essere affianco ad ogni ragazzo..

Spero di aver scritto tutto in maniera completa.... diciamo che il programma che avevo mi eseguiva l'80% di quello che mi serviva..
Grazie dell'aiuto ragazzi, intanto provo a sostituire quella porzione di codice
Windows 7 + Pacchetto Microsoft Office 2007
ilpince
Utente Junior
 
Post: 17
Iscritto il: 25/07/14 14:54

Re: PROGRAMMA excel per gestione alunni

Postdi ilpince » 29/07/14 16:35

perdonate il doppio post, però sostituendo quella porzione di codice datami da Flash mi da un errore, in quanto va settata "UR", ma dopo averla settata, quando inserisco un nuovo ragazzo tramite il foglio "MENU", questo non mi compare più nel foglio "PRESENZE"
Windows 7 + Pacchetto Microsoft Office 2007
ilpince
Utente Junior
 
Post: 17
Iscritto il: 25/07/14 14:54

Re: PROGRAMMA excel per gestione alunni

Postdi ricky53 » 30/07/14 00:20

Ciao,
invia il codice con le modifiche che hai fatto per integrare quanto proposto da Flash.

E' preferibile avere le informazioni in un unico foglio. Io integrerei il foglio "PRESENZE" con i nuovi dati (ossia quelli di "RESOCONTO") mettendoli in una nuova colonna, meglio se accanto al nome del ragazzo
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: PROGRAMMA excel per gestione alunni

Postdi ilpince » 30/07/14 10:47

Ciao, questo è il codice completo, con la porzione modificata da flash e sostituita alla preesistente.. probabilmente non l'ho inserita bene, però quando inserisco un nuovo ragazzo dal "MENU" , questo non compare più nel foglio "PRESENZE"..

Codice: Seleziona tutto
Option Explicit


Public Sub mNuovoFoglio()
   
    Dim wk As Workbook
    Dim v As Variant
   
    v = UCase(Application.InputBox("Inserire il nome del nuovo allievo."))
    If v = "" Or v = False Then
        MsgBox "Operazione annullata"
        Exit Sub
    End If
   
    Set wk = ThisWorkbook
   
    On Error Resume Next
    With wk
        .Worksheets("MODELLO").Visible = xlSheetVisible
        .Worksheets("MODELLO").Copy After:=Sheets(.Sheets.Count)
        ActiveSheet.Name = v
        If Err.Number <> 0 Then
            Application.DisplayAlerts = False
            ActiveSheet.Delete
            Application.DisplayAlerts = True
            MsgBox "Nome foglio già presente, operazione annullata."
            Set wk = Nothing
            Exit Sub
        End If
       
    End With
   
    Call mOrdinaMenu
    Call OrdinaPresenze
    Call mOrdinaFogli(v)
    ThisWorkbook.Worksheets("MODELLO").Visible = xlSheetVeryHidden
   
    Set wk = Nothing
   
End Sub

Public Sub mOrdinaMenu(Optional ByVal s As Variant)

    Dim shMenu As Worksheet
    Dim lRiga As Long
    Dim lng As Long
    Dim Sh As Worksheet
    Dim lCont As Long
   
    Set shMenu = ThisWorkbook.Worksheets("Menu")
   
    On Error Resume Next
   
    With shMenu
       
        Application.ScreenUpdating = False
        .Select
        .Range("A1").Select
        .Hyperlinks.Delete
       
        lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        .Range("A2:A" & lRiga).Value = ""
       
        lCont = 2
        For Each Sh In ThisWorkbook.Worksheets
       
            If Sh.Name <> s And Sh.Name <> "MODELLO" Then
                .Cells(lCont, 1).Value = Sh.Name
                lCont = lCont + 1
            End If
        Next
       
        .Range("A1:A" & lCont).Sort _
            Key1:=Range("A2"), _
            Order1:=xlAscending, _
            Header:=xlYes, _
            OrderCustom:=1, _
            MatchCase:=False, _
            Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
       
        For lng = 2 To lCont
            .Hyperlinks.Add Anchor:=.Range("A" & lng), _
                Address:="", _
                SubAddress:="'" & .Range("A" & lng).Value & "'!A1", _
                TextToDisplay:=.Range("A" & lng).Value
        Next
           
        Application.ScreenUpdating = True
           
    End With
   
     
    On Error Resume Next
   
    Set shMenu = Nothing
   
End Sub
Sub OrdinaPresenze()
Dim UR As Worksheet

Set UR = Worksheets("PRESENZE").Range("A" & Rows.Count).End(xlUp).Row
    ActiveWorkbook.Worksheets("PRESENZE").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("PRESENZE").Sort.SortFields.Add Key:=Range("A2:A10" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("PRESENZE").Sort
        .SetRange Range("A1:CS" & UR)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub



Public Sub mOrdinaFogli(Optional ByVal f As String)

On Error GoTo RigaErrore

    Dim NomiFogli() As String
    Dim lContaFogli As Long
    Dim lng As Long
   
    Application.ScreenUpdating = False
   
    lContaFogli = Worksheets.Count
   
    ReDim NomiFogli(1 To lContaFogli)
    For lng = 1 To lContaFogli
        NomiFogli(lng) = Worksheets(lng).Name
    Next
   
    Call mOrdina(NomiFogli)
   
    For lng = 1 To lContaFogli
        Worksheets(NomiFogli(lng)).Move _
            Before:=Worksheets(lng)
    Next
   
    With ThisWorkbook
        .Worksheets("MENU").Move Before:=Sheets(1)
        .Worksheets("MODELLO").Move Before:=Sheets(1)
        If f <> "" Then
            .Worksheets(f).Select
        End If
    End With
   
RigaChiusura:
    Application.ScreenUpdating = True
    Exit Sub
   
RigaErrore:
    MsgBox Err.Number & vbNewLine & Err.Description
    Resume RigaChiusura
   
End Sub


Public Sub mOrdina(ByRef sList() As String)

    Dim lPrimo As Long
    Dim lUltimo As Long
    Dim lx As Long
    Dim ly As Long
    Dim sTemp As String
   
    lPrimo = LBound(sList)
    lUltimo = UBound(sList)
   
    For lx = lPrimo To lUltimo - 1
        For ly = lx + 1 To lUltimo
            If sList(lx) > sList(ly) Then
                sTemp = sList(ly)
                sList(ly) = sList(lx)
                sList(lx) = sTemp
            End If
        Next
    Next
   
End Sub

Public Sub mEliminaFoglioAttivo()
    Dim lRisposta As Long
    lRisposta = MsgBox("Eliminare il foglio: " & _
        ActiveSheet.Name & "?", vbYesNo + vbQuestion, _
        "Attenzione!")
    If lRisposta = vbYes Then
        ActiveSheet.Delete
    End If
End Sub
Windows 7 + Pacchetto Microsoft Office 2007
ilpince
Utente Junior
 
Post: 17
Iscritto il: 25/07/14 14:54

Re: PROGRAMMA excel per gestione alunni

Postdi ricky53 » 30/07/14 12:08

Ciao,
al codice si potrebbero fare molti tagli ed ottimizzazioni ma ... pensiamoci dopo se sarà il caso.

Al momento ho risolto la questione che non inserisce in colonna "A" il nuovo alunno

Ecco il codice
Codice: Seleziona tutto
Public Sub mNuovoFoglio()
   
    Dim wk As Workbook
    Dim v As Variant, UR As Long
   
    v = UCase(Application.InputBox("Inserire il nome del nuovo allievo."))
    If v = "" Or v = False Then
        MsgBox "Operazione annullata"
        Exit Sub
    End If
   
    Set wk = ThisWorkbook
   
    On Error Resume Next
    With wk
        .Worksheets("MODELLO").Visible = xlSheetVisible
        .Worksheets("MODELLO").Copy After:=Sheets(.Sheets.Count)
        ActiveSheet.Name = v
        If Err.Number <> 0 Then
            Application.DisplayAlerts = False
            ActiveSheet.Delete
            Application.DisplayAlerts = True
            MsgBox "Nome foglio già presente, operazione annullata."
            Set wk = Nothing
            Exit Sub
        End If
    End With
       
' INIZIO RIGHE AGGIUNTE ........................................................................................
    Sheets("MENU").Select
    UR = Range("A" & Rows.Count).End(xlUp).Row + 1
    Cells(UR, "A") = v
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(UR, "A"), Address:="", SubAddress:= _
        v & "!A1", TextToDisplay:=v

    Range("A1:A" & UR).Sort _
        Key1:=Range("A2"), _
        Order1:=xlAscending, _
        Header:=xlYes, _
        OrderCustom:=1, _
        MatchCase:=False, _
        Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Sheets("PRESENZE").Select
    UR = Range("A" & Rows.Count).End(xlUp).Row + 1
    Cells(UR, "A") = v
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(UR, "A"), Address:="", SubAddress:= _
        v & "!A1", TextToDisplay:=v

'    Call mOrdinaMenu  ' <<====== TOGLIERE
' FINE RIGHE AGGIUNTE ........................................................................................
   
    Call OrdinaPresenze
   
    Call mOrdinaFogli(v)
    ThisWorkbook.Worksheets("MODELLO").Visible = xlSheetVeryHidden
   
    Set wk = Nothing
   
End Sub


Anche il mio codice va ottimizzato ma ... a dopo
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: PROGRAMMA excel per gestione alunni

Postdi ilpince » 31/07/14 17:37

Grazie ricky, ora provo, ma la variabile UR come la devo definire? (altrimenti mi dice "variabile non definita", in fase di compilazione) grazie
Windows 7 + Pacchetto Microsoft Office 2007
ilpince
Utente Junior
 
Post: 17
Iscritto il: 25/07/14 14:54

Re: PROGRAMMA excel per gestione alunni

Postdi ricky53 » 31/07/14 20:22

Ciao,
controlla bene e vedrai che nel codice che ti ho inviato la variabile è stata definita !
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: PROGRAMMA excel per gestione alunni

Postdi ilpince » 31/07/14 21:52

Perfetto ricky, ho aggiunto la tua parte a quella di flash e ora comincia a girare bene il tutto (lo faceva anche prima, solo che non riuscivo ad entrare nei meccanismi di visual basic, ora grazie a voi mi risulta leggermente piu comprensibile)
C'è ancora un problema, cioè nel foglio "PRESENZE", non devono esserci i collegamenti a "PRESENZE","MENU" e "MODELLO...
voglio dire, essendo una pagina che uso per segnare le presenze dei ragazzi e che in automatico usa tutte le pagine presenti nel documento per mettere i collegamenti con il nome di ogni foglio, in ordine alfabetico, come faccio a far escludere i suddetti fogli? volendo pensare ad un futuro, come faccio a fargli escludere anche altre pagine che magari inserirò un domani e che mi serviranno solo per dei calcoli o grafici personali e che quindi non devono rientrare nel foglio "PRESENZE"?
Windows 7 + Pacchetto Microsoft Office 2007
ilpince
Utente Junior
 
Post: 17
Iscritto il: 25/07/14 14:54

Re: PROGRAMMA excel per gestione alunni

Postdi ricky53 » 31/07/14 22:40

Ciao,
NON mi è chiaro cosa hai fatto sul codice. NON dovevi aggiungere il mio codice a quello di Flash ma dovevi sostituire la tua macro "mNuovoFoglio" con quella che ti ho inviato io.

Comunque per il problema che riporti devi eliminare manualmente dal foglio "PRESENZE" le righe con i nomi dei fogli che NON vuoi siano presenti: Menu, Modelli, Presenze e poi con il pulsante "Inserisci Cliente" lanciare la macro per inserire un nuovo alunno e se hai inserito il codice che ti ho inviato io nella tua macro "mNuovoFoglio", non dovrebbero più essere inseriti i fogli NON voluti.

Se hai ancora problemi allora invia tutte le macro che hai nel file e vedremo di trovare la soluzione alla questione
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: PROGRAMMA excel per gestione alunni

Postdi ricky53 » 31/07/14 23:18

Ciao,
prima leggi il mio precedente intervento.

Adesso siamo qui ed invio nuovamente il codice che ho aggiunto alla tua macro "mNuovoFoglio" perchè ho notato che non ho inserito gli apici nel nome del foglio nel collegamento ipertestuale.
Il codice da utilizzare è il seguente che sostituisce quello inviato precedentemente
Codice: Seleziona tutto
' INIZIO RIGHE AGGIUNTE ........................................................................................
    Sheets("MENU").Select
    UR = Range("A" & Rows.Count).End(xlUp).Row + 1
    Cells(UR, "A") = v
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(UR, "A"), Address:="", SubAddress:= _
        "'" & v & "'!A1", TextToDisplay:=v

    Range("A1:A" & UR).Sort _
        Key1:=Range("A2"), _
        Order1:=xlAscending, _
        Header:=xlYes, _
        OrderCustom:=1, _
        MatchCase:=False, _
        Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Sheets("PRESENZE").Select
    UR = Range("A" & Rows.Count).End(xlUp).Row + 1
    Cells(UR, "A") = v
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(UR, "A"), Address:="", SubAddress:= _
        "'" & v & "'!A1", TextToDisplay:=v

'    Call mOrdinaMenu  ' <<====== TOGLIERE
' FINE RIGHE AGGIUNTE ........................................................................................
   
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: PROGRAMMA excel per gestione alunni

Postdi ilpince » 01/08/14 17:41

Ricky ho unito i due codici perchè per non saper ne leggere ne scrivere , immettendo solo il tuo codice andava tutto benone meno che non mi ordinava in ordine alfabetico il file presenze, ora però ho risolto tutto, grazie.
Mi sorge una domanda spontanea: è possibile ,secondo te, creare una macro dove, dopo che mi è stato chiesto il nome del nuovo ragazzo da inserire, mi chieda se voglio mettere il nuovo foglio creato nel file presenze?
Grazie mille e scusa per le incomprensioni
Windows 7 + Pacchetto Microsoft Office 2007
ilpince
Utente Junior
 
Post: 17
Iscritto il: 25/07/14 14:54

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "PROGRAMMA excel per gestione alunni":


Chi c’è in linea

Visitano il forum: Nessuno e 65 ospiti