converti carattere in maiuscolo
Hai un problema con Excel? 
converti carattere in maiuscolo
di Johnny (utente non iscritto) data: 04/06/2017 12:22:43
salve ho il seguente codice che converte il testo digitato in C8 in maiuscolo e funziona,
il problema sorge se cancello il testo digitato in C8 mi da errore come di run-time '13'
allego il codice
Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Application.Intersect(Target, Range("C8")) Is Nothing) Then
With Target
If Not .HasFormula Then
.Value = UCase(.Value)
End If
End With
End If
End Sub
|
di alfrimpa data: 04/06/2017 12:35:42
Ciao Johnny
In questo caso penso che tu possa risolvere inserendo un On Error Resume Next al secondo rigo della macro.
Potrebbe andar bene anche un'istruzione del tipo
If target.Value = "" Then Exit Sub
che esce dalla macro se si cancella la cella C8.
Alfredo
di Johnny (utente non iscritto) data: 04/06/2017 13:38:44
ciao alfrimpa ho provato con If target.Value = "" Then Exit Sub
ma mi da errore di runtime forse sbaglio qualche passaggio
di patel data: 04/06/2017 15:46:51
prova così
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$8" Then Exit Sub
If Target = "" Then Exit Sub
Target.Value = UCase(Target.Value)
End Sub |
di Johnny (utente non iscritto) data: 04/06/2017 20:28:28
ciao patel ho provato il codice, adesso funziona, solo che ho notato che quando parte la runtime e cambia il testo in maiuscolo alla fine della runtime cioè a end sub, invece di terminare la runtime , riparte dal primo rigo e la esegue senza fermarsi, ho modificato in questo modo, e sembra funzionare, c'è qualche altro sistema?
Allego il codice dai un occhiata e fammi sapere.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$8" Then Exit Sub
Application.EnableEvents = False
If Target = "" Then Exit Sub
Target.Value = UCase(Target.Value)
Application.EnableEvents = True
End Sub |
di patel data: 04/06/2017 20:56:44
credo che sia il modo corretto, non ci avevo fatto caso
di scossa data: 05/06/2017 10:14:01
cit. patel: "... credo che sia il modo corretto"
Ciao,
a parte che gli exit sub sparsi per il codice rendono difficile seguirne il flusso, c'è un errore di fondo: se il target è la cella C8 gli eventi vengono disabilitati, ma se il contenuto è stato cancellato (.Value="") gli eventi restano disabilitati.
Sotto trovi un modo per risolvere.
| scossa's web site |
Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$C$8" Then
If .Value <> "" Then
Application.EnableEvents = False
.Value = UCase(.Value)
Application.EnableEvents = True
End If
End If
End With
End Sub |
di patel data: 05/06/2017 10:57:53
Grazie scossa, non avevo fatto caso alla posizione di Application.EnableEvents = False
di Johnny (utente non iscritto) data: 05/06/2017 12:37:21
grazie per l'aiuto
Vuoi Approfondire?