Se non cè aggiungi foglio
Hai un problema con Excel? 
di LucaS. (utente non iscritto) data: 24/01/2014 20:47:02
Ecco qua.
Per adesso prende come nome da cercare il contenuto della cella A1 nel foglio1, tu lo devi adattare alle tue esigenze visto che non ho idea da dove prendi il codice a barre.
Se la cella A1 è vuota mostra un messaggio di errore.
Cerca il foglio specificato e se non lo trova lo aggiunge.
Sub trova_foglio()
Dim a As Boolean
If Range("a1") <> "" Then
nomefoglio = Range("a1")
Else
MsgBox "Il nome non è definito.", vbCritical + vbOKOnly, "Errore Nome"
Exit Sub
End If
For i = 1 To Sheets.Count
If Sheets(i).Name = nomefoglio Then
Sheets(i).Select
a = True
Exit For
Else
a = False
End If
Next
If a = False Then
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = nomefoglio
End If
End Sub
|
di Deresimo (utente non iscritto) data: 24/01/2014 21:20:59
Grazie mille. Funziona Benissimo. Spero di imparare presto questo linguaggio. Mi intrippa...
di scossa (utente non iscritto) data: 24/01/2014 22:15:40
@LucaS.: senza discutere sulla "logica" scelta per risolvere, vorrei fare un paio di osservazioni su cui riflettere.
- ti premuri di dichiarare la variabile *a*, ma dimentichi di dichiarare le altre (i, nomefoglio);
- l'Else in quel ciclo For non serve a nulla: se trova il foglio, *a* viene impostata a True e si esce dal ciclo, in caso contrario l'Else imposta a False *a*, ma *a* è già False.
Ovviamente le mie sono opinioni personali, nate osservando solo il codice, spero non vengano male interpretate.
di gaetanopr (utente non iscritto) data: 24/01/2014 23:34:20
Ciao, oltre a togliere Else puoi sostituire Exit For con Exit Sub, dato che una volta trovato il foglio deve soltanto attivarlo.
di gaetanopr (utente non iscritto) data: 24/01/2014 23:40:08
potresti sintetizzarla in questo modo
Sub trova_foglio()
Dim nomefoglio As String
If Range("a1") <> "" Then
nomefoglio = Range("a1")
Else
MsgBox "Il nome non è definito.", vbCritical + vbOKOnly, "Errore Nome"
Exit Sub
End If
For i = 1 To Sheets.Count
If Sheets(i).Name = nomefoglio Then
Sheets(i).Select
Exit Sub
End If
Next
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = nomefoglio
End Sub
|
di LucaS. (utente non iscritto) data: 25/01/2014 10:01:53
Si ci avevo pensato anche io più tardi e adesso volevo rimediare ma mi avete anticipato...
di deresimo data: 25/01/2014 13:13:44
Troppo gentili. Mi sa che approfitterò ancora del Vostro sapere.
Vuoi Approfondire?