Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Iniziale maiuscola in un range di caselle

Ultimo Aggiornamento: 28/10/2012 17:10
Post: 1
Registrato il: 16/06/2006
Città: ACCIANO
Età: 26
Utente Junior
OFFLINE
27/10/2012 18:44

Ciao a tutti,
Sono nuovo e avrei una domanda per voi.
Ho letto qualche vostra discussione precedente riguardo all'argomento, ma non ho trovato la soluzione esatta al mio problema.
Io vorrei che l'iniziale di quello che scrivo in una cella sia maiuscola. Però questo deve avvenire solo in alcune celle specifiche.
Non ho trovato tra le diverse discussioni una soluzione alla mia domanda.

P.S. Volevo specificare che uno dei range di caselle che devono avere avere l'iniziale maiuscola sono unite in una unica casella.

Potete aiutarmi?

Grazie tante.
[Modificato da smichel 27/10/2012 19:06]
Post: 4.158
Registrato il: 01/05/2006
Utente Master
2010
OFFLINE
28/10/2012 10:55

Ciao smichel; qui trovi il codice per le iniziali maiuscole:

http://freeforumzone.leonardo.it/lofi/Scrivere-maiuscola-SOLO-la-prima-lettera-senza-premere-shift/D4073441.html

ma dubito funzioni su celle unite; non sono un mago del VB, ma mi hanno sempre consigliato di evitare celle unite quando si utilizza il codice VB; attendiamo il parere di qualcuno più esperto.
[SM=x423023]
[SM=x423053]
Ciao
Antonio
(Versione excel:2003/2010)
Post: 4
Registrato il: 16/06/2006
Città: ACCIANO
Età: 26
Utente Junior
OFFLINE
28/10/2012 11:49

Grazie,

Ho sfuttato il codice che mi hai indicato per creare una cosa un po più complessa:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim area As Range
Set area = Me.Range("D1")
If Not Intersect(Target, area) Is Nothing Then
If Range("D1") = "" Then
Range("D1:F1") = "Nome Istruttore"
End If
Set area = Nothing
End If
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("D1:F1")) Is Nothing Then
Target(1).Value = UCase(Left(Target(1).Value, 1)) & Right(Target(1).Value, Len(Target(1).Value) - 1)
End If
Application.EnableEvents = True
End Sub

L'ho fatto a tentativi perchè non conosco il codice.
Però funziona [SM=x423026]

Con queste stringhe ho fatto in modo che quello che scrivo nelle celle unite sia maiuscolo e che quando cancello il contenuto venga scritto nella cella "Nome Istruttore"

Grazie a tutti siete dei grandi.
Excel 2003 Professional
Post: 5
Registrato il: 16/06/2006
Città: ACCIANO
Età: 26
Utente Junior
OFFLINE
28/10/2012 12:43

Ora però vorrei anche aggiungere che nei range(A3:A17) e (B3:B17) l'iniziale sia maiuscola.
Ho provato a fare come per il codice precedente, ma quando vado a cancellare il contenuto delle caselle nel range mi da errore (run-time 5) e mi evidenzia la stringa:

Application.EnableEvents = False
If Not Application.Intersect(Target, Range("A3:A17")) Is Nothing Then
Target(1).Value = UCase(Left(Target(1).Value, 1)) & Right(Target(1).Value, Len(Target(1).Value) - 1) End If
Application.EnableEvents = True
Come faccio?

Questo è quello che ho scritto:


Private Sub Worksheet_Change(ByVal Target As Range)
Dim area As Range
Set area = Me.Range("D1")
If Not Intersect(Target, area) Is Nothing Then
If Range("D1") = "" Then
Range("D1:F1") = "Nome Istruttore"
End If
Set area = Nothing
End If
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("D1:F1")) Is Nothing Then
Target(1).Value = UCase(Left(Target(1).Value, 1)) & Right(Target(1).Value, Len(Target(1).Value) - 1)
End If
Application.EnableEvents = True
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("A3:A17")) Is Nothing Then
Target(1).Value = UCase(Left(Target(1).Value, 1)) & Right(Target(1).Value, Len(Target(1).Value) - 1)
End If
Application.EnableEvents = True
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("B3:B17")) Is Nothing Then
Target(1).Value = UCase(Left(Target(1).Value, 1)) & Right(Target(1).Value, Len(Target(1).Value) - 1)
End If
Application.EnableEvents = True
End Sub

Mi sa che ho fatto un po di casino [SM=x423023]
[Modificato da smichel 28/10/2012 12:46]
Excel 2003 Professional
Post: 698
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Senior
2010
OFFLINE
28/10/2012 13:13

quando cancelli Right(Target.Value, Len(Target.Value) - 1) dà errore perché Len(Target.Value)=0
meglio una cosa del genere
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
        If Len(Target(1).Value) > 1 Then
        Target(1).Value = UCase(Left(Target(1), 1)) & LCase(Mid(Target(1), 2))
        End If
    End If
End Sub


[Modificato da patel45 28/10/2012 13:46]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 6
Registrato il: 16/06/2006
Città: ACCIANO
Età: 26
Utente Junior
OFFLINE
28/10/2012 17:10

Ok funziona.
Grazie mille. [SM=x423026]
[Modificato da smichel 28/10/2012 17:13]
Excel 2003 Professional
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:38. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com