Se stai sviluppando un foglio di lavoro per altri utenti, potresti volere che inseriscano sempre le informazioni in maiuscolo. Excel fornisce una funzione del foglio di lavoro che consente di convertire le informazioni in maiuscolo, ma non si applica poiché le persone stanno effettivamente inserendo le informazioni. Ad esempio, se qualcuno immette informazioni nella cella B6, la funzione del foglio di lavoro non può essere utilizzata per convertire le informazioni in B6 in maiuscolo.

Invece, devi usare una macro per fare la modifica per te. Quando si programma in VBA, è possibile forzare Excel a eseguire una particolare macro ogni volta che viene modificato qualcosa in una cella del foglio di lavoro. La seguente macro può essere utilizzata per convertire tutti gli input del foglio di lavoro in maiuscolo:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.HasFormula Then Exit Sub         Application.EnableEvents = False         Target = UCase(Target.Cells(1))

Application.EnableEvents = True End Sub

Affinché la macro funzioni, tuttavia, deve essere inserita in una posizione specifica.

Segui questi passaggi per posizionare la macro:

  1. Visualizza l’editor VBA premendo Alt + F11.

  2. Nella finestra Progetto, sul lato sinistro dell’Editor, fai doppio clic sul nome del foglio di lavoro che stai utilizzando. (Potrebbe essere necessario aprire prima la cartella VBAProject, quindi aprire la cartella Oggetti di Microsoft Excel al di sotto di essa.)

  3. Nella finestra del codice per il foglio di lavoro, incolla la macro sopra.

  4. Chiudi l’editor VBA.

Ora qualsiasi cosa (eccetto le formule) che viene inserita in qualsiasi cella del foglio di lavoro verrà automaticamente convertita in maiuscolo. Se non vuoi che tutto venga convertito, ma solo le celle in una particolare area del foglio di lavoro, puoi modificare leggermente la macro:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not (Application.Intersect(Target, Range("A1:B10")) _       Is Nothing) Then         With Target             If Not .HasFormula Then                 Application.EnableEvents = False                 .Value = UCase(.Value)

Application.EnableEvents = True             End If         End With     End If End Sub

In questo particolare esempio, verrà convertito solo il testo immesso nelle celle A1: B10; tutto il resto verrà lasciato come inserito. Se è necessario convertire un intervallo diverso, specificare tale intervallo nella seconda riga della macro.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (9813) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia di menu precedente di Excel qui: