› Sviluppare funzionalita su Microsoft Office con VBA › disporre fogli in ordine alfabetico
-
AutoreArticoli
-
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
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
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 SubIn pratica ho aggiunto la variabile
sh As Worksheetche 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 Thenin
If UCase(ThisWorkbook.Worksheets(j).Name) < UCase(ThisWorkbook.Worksheets(i).Name) Then -
AutoreArticoli
