Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Conteggio immediato caratteri rimanenti

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] Conteggio immediato caratteri rimanenti

Postdi marte1503 » 24/10/11 09:52

Ciao a tutti

Utilizzo la cella A1 di foglio1 per descrivere le caratteristiche di un oggetto e ho limitato l’inserimento caratteri a 230 tramite convalida dati.
Nella cella B1 vorrei una funzione capace di contare i caratteri residui ancora inseribili in A1 mentre ancora li sto digitando, così da potermi regolare immediatamente sullo spazio a disposizione.
E’ possibile farlo?

Grazie
Marte1503
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Sponsor
 

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi Flash30005 » 24/10/11 13:42

A fine digitazione potrai avere il conteggio con la formula in B1
Codice: Seleziona tutto
=230-LUNGHEZZA(A1)

ma avrai il conteggio solo dopo aver premuto invio e quindi non in tempo reale a meno che non si "captano" i tasti digitati da tastiera per effettuare ogni volta il calcolo ;)

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi Anthony47 » 24/10/11 15:07

Non credo che si possa fare usando normali funzioni. Dovrai quindi trovare un' alternativa per caricare la descrizione non direttamente nella cella ma, ad esempio, in un textbox di una form; userai poi l' evento TextBox1_Change per dare indicazioni all' utente.
Ad esempio:
Immagine

Uploaded with ImageShack.us
La form dell' esempio contiene un oggetto TextBox1 e una Label1. Il codice di controllo e':
Codice: Seleziona tutto
Private Sub TextBox1_Change()
maxCrt% = 230
Label1.Caption = "Inserire Descrizione" & vbCrLf & "Disponibili ancora " & maxCrt - Len(TextBox1.Text) & " caratteri"
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
    Cells(2, 2).Value = TextBox1.Text
    UserForm1.Hide
End If
End Sub

Tramite la Proprietà "caption" e' stata inserita l' intestazione "Caratteristiche dell' oggetto" sulla Form e "Inserire descrizione" come valore iniziale della Label1; il primo codice inserisce l' informazione sulla disponibilita' residua di caratteri, il secondo posiziona il contenuto all' interno della cella B2 (Cells(2,2)) e chiude la form quando viene pigiato Enter.

Si tratta di un esempio che ovviamente dovrai completare con altre prestazioni.

Una cosa analoga la potresti fare con il controllo "Casella di testo" degli Strumenti di controllo, visto che anche loro sono oggetti programmabili.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi marte1503 » 24/10/11 15:16

Ciao Flash

Grazie per l’attenzione!
La soluzione con formula LUNGHEZZA l’avevo provata anch’io, ma non mi soddisfa perché richiede sempre la conferma del testo inserito in A1 premendo Invio per avere il totale caratteri in B1. A me sarebbe piaciuta una soluzione tipo "telefono cellulare" che scala in diretta il numero di caratteri rimanenti durante la composizione del messaggio.
Visto che è un’operazione che devo ripetere spesso mi chiedevo se ci fosse una macro in grado di farlo.
Non ho capito la soluzione che mi dicevi per captare i tasti, come devo fare?
Grazie
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi Flash30005 » 24/10/11 15:31

Ti è forse sfuggita la soluzione di Anthony?

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi marte1503 » 24/10/11 21:02

...Scusate i ritardi, oggi sono riuscito a entrare un paio di volte nel forum e sempre in maniera furtiva.
Anthony, non avevo visto la tua risposta perchè ero intento a preparare la domanda per Flash(ciao).

Vi ringrazio per i suggerimenti, domani dovrei riuscire a dare un'occhiata. Non ho mai utilizzato soluzioni tipo quella suggerita, il mio excel al momento è limitato a qualche formula e alla registrazione di macro...
Anthony, se dovessi avere problemi nell'applicare la tua soluzione ti farò ancora qualche domanda, al momento grazie per quanto già postato.

Ciao
Grazie
Marte1503
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi Anthony47 » 25/10/11 12:55

Se non hai mai creato una userform, vai sull' editor delle macro (da excel: Alt-F11), Menu /Inserisci /Userform
Ti si apre la bozza di form vuota; usa la casella degli strumenti (Menu /Visualizza /Casella degli strumenti) per posizionare sulla form vuota una "casella di testo" (sara' il tuo TextBox1) e una "Etichetta" (sara' la tua Label1).
Visualizza la finestra Proprieta' (Menu /Visualizza /Finestra proprieta'), poi seleziona il singolo oggetto (Form, Textbox, Label) e modifica le proprieta' Caption come ti ho detto nel messaggio precedente.
Visualizza il codice associato alla form (Menu /Visualizza /Codice; oppure F7), e copia /incolla il codice di esempio che ti avevo dato.
Torma alla form (Menu /Visualizza /Oggetto; oppure Maiusc-F7), aggiusta la posizione e dimensione dei componenti; quando sei pronto usa F5 per avviare la presentazione della form, che si chiudera' con l' Enter nel textbox o premendo la "X" della form.
Ovviamente la form puo' essere specializzata con altri oggetti (es un tasto Cancel, altri textbox, altri oggetti disponibili nella casela degli strumenti) e con altre prestazioni ottenibili sfruttando i numerosi eventi programmabili della form e dei suoi oggetti (io mi sono limitato a usare l' evento TextBox_Change e l' evento KeyDown del taxtbox).

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi marte1503 » 25/10/11 20:24

…Waw! Meglio di un libro!
Ciao Anthony, grazie.
Sono riuscito seguendo le tue istruzioni a creare la finestrella con il contatore, mi dice il residuo caratteri in diretta e al termine inserisce nella cella quanto digitato, tuttavia (contraddizione) non ho capito bene come utilizzarlo :-? , (pensavo che la finestra si attivasse automaticamente appena scrivessi qualcosa nella cella, invece no. Non sapendo cosa aspettarmi di preciso dalla modifica sono in dubbio di aver fatto tutto o di aver tralasciato qualcosa).
Per accedere a questa finestra con contatore devo sempre passare attraverso VBA?
Non è possibile farla attivare automaticamente appena provo a scrivere nella cella?

Grazie
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi Anthony47 » 25/10/11 22:35

Se il tutto deve essere attivato in A1 allora potresti usare la Worksheet_Change, es:
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Range("A1").Address <> "$A$1" Then Exit Sub
UserForm1.TextBox1.Value = Range("A1").Value '<< Vedi testo
UserForm1.Show
End Sub
Da inserire sul modulo di codice del foglio su cui lavori.

Ricorda anche di modificare nella Sub TextBox1_KeyDown
Codice: Seleziona tutto
If KeyCode = 13 Then  'esistente
    Cells(1, 1).Value = TextBox1.Text  '   MODIFICATA per puntare ad A1

Per quanto riguarda l' istruzione marcata <<, essa serve a posizionare in modo iniziale nel textbox il valore correntemente inserito in A1, per facilitare la conferma nel caso si selezioni A1 in modo accidentale; come rovescio della medaglia, sara' necessario cancellare il valore presente prima di inserirne uno nuovo. Per disabilitare questa prestazione basta cancellare la riga.
Come alternativa potresti inserire sulla form un tasto "Esci senza modificare", per chiudere la form senza caricamento in A1, ma questo potrebbe richiedere di inserire anche un tasto "Modifica ed esci" per rendere piu' chiara l' interfaccia utente. Le varianti sono piu' di una...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi marte1503 » 26/10/11 21:35

Ciao

..Riesco solo ora a provare.
C’è qualcosa che non funziona, devo sempre premere alt+F11 per sfruttare la finestra-contatore perchè puntando sulla cella non si attiva niente.

Ho inserito la macro nel modulo di foglio3 (quello in cui mi serve la finestra-contatore) modificando il range:
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Range("D53").Address <> "$D$53" Then Exit Sub
UserForm1.TextBox1.Value = Range("D53").Value
UserForm1.Show
End Sub


E ho corretto il range anche nel modulo della form :
Codice: Seleziona tutto
Private Sub TextBox1_Change()
maxCrt% = 230
Label1.Caption = "Inserire Descrizione " & vbCrLf & "Disponibili ancora " & maxCrt - Len(TextBox1.Text) & " caratteri"
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then 'esistente
Cells(53, 4).Value = TextBox1.Text ' MODIFICATA per puntare ad D53

UserForm1.Hide
End If
End Sub


Cos’altro devo fare?

Grazie
Ciao
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi Anthony47 » 26/10/11 22:09

Cosi':
Codice: Seleziona tutto
If Target.Range("A1").Address <> "$D$53" Then Exit Sub

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Conteggio immediato caratteri rimanenti

Postdi marte1503 » 26/10/11 23:19

Tutto ok, ora funziona benissimo! :)
Grazie 1000!

Ciao
Marte1503
marte1503
Utente Senior
 
Post: 174
Iscritto il: 08/01/10 20:43
Località: Como


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Conteggio immediato caratteri rimanenti":


Chi c’è in linea

Visitano il forum: alfrimpa e 9 ospiti