Sviluppare funzionalita su Microsoft Office con VBA disporre fogli in ordine alfabetico

Login Registrati
Stai vedendo 3 articoli - dal 26 a 28 (di 28 totali)
  • Autore
    Articoli
  • #52699 Score: 0 | Risposta

    Frasubb
    Partecipante
      1 pt

      ok grazie Alex, ma la cosa strana è che magari qualche volta due o tre fogli li crea e li attiva conseguentemente, ma poi al quarto ricomincia il difetto

      #52705 Score: 0 | Risposta

      Frasubb
      Partecipante
        1 pt

        sto notando una cosa: inserendo pian piano i dati nei relativi fogli, se quest'ultimi li nomino CON l'iniziale minuscola, allora sembra tutto funzionare ovvero ogni foglio nuovo che creo viene immediatamente ed automaticamente attivato.

        Questa cosa, per voi che ci capite, può essere una discriminante per il corretto funzionamento della macro "Agg cliente" ?

        Grazie

        #52706 Score: 0 | Risposta

        alexps81
        Moderatore
          58 pts

          Ciao @frasubb fai così:

          la Sub inserisciFoglio() la sostituisci con questa:

          Sub inserisciFoglio()
              Dim wsBase As Worksheet, ws As Worksheet, sh As Worksheet '<--aggiunto
              Dim nome As Variant
              Dim trovato As Boolean
              
              nome = Application.InputBox("Inserisci il nome del nuovo foglio", "Aggiungi Foglio", Type:=2)
                  
              If nome <> False Then
                  For Each ws In ThisWorkbook.Worksheets
                      If ws.Name = nome Then
                          trovato = True
                          Exit For
                      End If
                  Next ws
                  If Not trovato Then
                      If nomeValido(nome) Then
                          Set wsBase = ThisWorkbook.Worksheets("FoglioBase")
                          wsBase.Visible = xlSheetVisible
                          wsBase.Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
                          Set sh = ActiveSheet '<--aggiunto
                          sh.Name = nome '<--aggiunto
                      Else
                          MsgBox "Il nome inserito non è valido!", vbExclamation, "Controllo nome foglio"
                          Exit Sub
                      End If
                  Else
                      MsgBox "Foglio già esistente!", vbCritical, "Controllo nome foglio"
                      Exit Sub
                  End If
                  ordinaFogli
              End If
              sh.Activate
              
              Set wsBase = Nothing '<--aggiunto
              Set ws = Nothing '<--aggiunto
              Set sh = Nothing '<--aggiunto
          End Sub

          In pratica ho aggiunto la variabile sh As Worksheet che punta direttamente al Foglio appena creato. Poi dopo che i fogli sono stati ordinati, attiva il foglio appena creato (il problema lo crea la Sub ordinaFogli che sposta il Foglio attivo). 

          Poi attualmente la Sub ordinaFogli gestisce l'ordinamento dei fogli tenendo presente anche se le lettere sono scritte in maiuscolo o minuscolo. Ad esempio il Foglio chiamato Anna verrà posto prima del Foglio chiamato abate. Questo perché la parola Anna ha la lettera iniziale maiuscola.

          Se la tua intenzione è quella di non considerare la differenza tra maiuscole e minuscole (quindi abate deve venire lo stesso prima di Anna), allora devi modificare la Sub ordinaFogli:

          modifica il rigo

          If ThisWorkbook.Worksheets(j).Name < ThisWorkbook.Worksheets(i).Name Then

          in

          If UCase(ThisWorkbook.Worksheets(j).Name) < UCase(ThisWorkbook.Worksheets(i).Name) Then
        Login Registrati
        Stai vedendo 3 articoli - dal 26 a 28 (di 28 totali)
        Rispondi a: disporre fogli in ordine alfabetico
        Gli allegati sono permessi solo ad utenti REGISTRATI
        Le tue informazioni: