Caselle di testo



  • Caselle di testo
    di Sandy1988 (utente non iscritto) data: 22/03/2015 15:51:20

    Ho una cartella di lavoro, che contiene vari fogli. Il foglio A contiene una casella di testo, nella quale sono scritti alcuni dati. Il foglio B ha un'analoga casella di testo, nella quale vorrei che fossero riportati gli stessi dati inseriti nella casella di testo del foglio A. E' possibile collegare le due caselle di testo, di modo che quanto scritto nella casella di testo del foglio A venga "scritto" anche nella casella di testo del foglio B (e anche nelle caselle di altri fogli denominati C, D, E, F)?.



  • di Mister_x (utente non iscritto) data: 22/03/2015 17:13:17

    ciao

    dalle poche volte ma poche', che ho fatto questo lavoro, mi risulta che posso collegare una casella di testo o piu' ad una cella e non due caselle di testo
    facciamo un esempio
    metti una casella di testo in Foglio2
    ora premi il tasto F2 e nella barra della formula scrivi =Foglio1!$A$1 dai invio
    ora vai in foglio1 cella a1 e vedrai che tutto quello che scivi in questa verra' riportato nella casella di testo in foglio2
    per i formati e il resto fai delle prove

    ciao





  • di Sandy1988 (utente non iscritto) data: 22/03/2015 17:18:03

    Ti ringrazio della tua osservazione, ma non è quello che serve a me; io devo infatti collegare due caselle di testo, che si trovano due fogli diversi, e non una casella di testo con una cella.



  • di alfrimpa data: 22/03/2015 17:21:31

    Oppure con una macro come quella sotto riportata da inserire sull'evento LostFocus della casella di testo presente sul foglio1

    Deselezionando la casella verranno compilate le altre presenti sugli altri fogli.

    Non so se era questo che volevi

    Alfredo
     
    Private Sub TextBox1_LostFocus()
    Sheets(2).TextBox1.Value = Sheets(1).TextBox1.Value
    Sheets(3).TextBox1.Value = Sheets(1).TextBox1.Value
    End Sub
    






  • di Sandy1988 (utente non iscritto) data: 22/03/2015 17:43:00

    Posto un file di esempio.



  • di alfrimpa data: 22/03/2015 18:16:52

    Ciao Sandy

    Ti riallego il tuo file sul quale ho inserito (sotto le tue) due caselle di testo (ActiveX) nei fogli 1 e due

    Se compili quella nel foglio 1 ed esci dalla casella quella sul foglio 2 avrà lo stesso testo nella casella sul foglio 1.

    Però, ripeto, non so se è questo che vuoi.

    Alfredo





  • di Sandy1988 (utente non iscritto) data: 22/03/2015 18:35:02

    Ti ringrazio, è proprio quello che cercavo. Mi spieghi però come hai fatto, perchè devo riprodurre il tutto sul foglio reale. Mi sembra che si tratti duna macro da inserire nell'evento LostFocus della casella del primo foglio: ma come si fa?.



  • di Sandy1988 (utente non iscritto) data: 22/03/2015 18:46:49

    Ci sono arrivata!!!. Grazie Alfredo, sei un mito



  • di alfrimpa data: 22/03/2015 18:49:44

    Beh Sandy non esageriamo Per così poco?

    Alfredo





  • di Mister_x (utente non iscritto) data: 22/03/2015 18:54:00

    ciao alfredo

    ho visto adesso il tuo intervento, usando un TextBox, ma che io sappia, forse mi sbaglio questo non si comporta come una casella di testo , nella quale si possono usare per ess i ritorni a capo , le altezze separate dei caratteri ecc. ecc , mentre una TextBox a di suo solamente una linea di scrittura
    visto adesso anche il risolto , a questo punto era piu semplice usare delle celle dei fogli per fare questo lavoro,

    rimango quindi in attesa del riscontro da quado si dovra inserire in questo TextBox una spece di poema

    ciao da Mister_x





  • di alfrimpa data: 22/03/2015 19:11:27

    Ciao Mister_x

    E' vero hai perfettamente ragione

    Io mi sono limitato a rispondere alla iniziale domanda di Sandy (tra l'altro non sono riuscito a capire come abbia disegnato la "sua" casella di testo; io sul mio Excel 2007 ho inspiegabilmente inabilitata la casella di testo come controllo modulo ed ho solo quella ActiveX).

    Comunque ci dirà Lei se la soluzione proposta la soddisfa pienamente o, invece, sarà necessario percorrere altre strade.

    Alfredo





  • di Sandy1988 (utente non iscritto) data: 23/03/2015 12:17:00

    La soluzione proposta funziona..ma solo sul PC di casa. In ufficio vi sono evidentemente delle restrizioni per qunto riguarda i controlli ActiveX: infatti, quando vado ad inserire la casella di testo compare il messaggio "Impossibile inserire l'oggetto". Lo stesso comportamento si ha quando cerco di inserire un qualsiasi controllo ActiveX, mentre non c'è nessun problema se voglio inserire una casella di testo come campo modulo. Poichè io lavoro molto dall'ufficio ho necessità di una soluzione alternativa, senza utilizzare i controlli ActiveX.



  • di alfrimpa data: 23/03/2015 14:04:30

    Ciao Sandy.

    Da quanto ho potuto capire mi pare di poter dire che lo strumento "Casella di Testo" non sia quello più idoneo a fare quello che chiedi in quanto non è gestibile attraverso il VBA (è possibile solo associare una macro che viene mandata in esecuzione quando si clicca su di essa).

    Tu che necessità specifica hai per dover utilizzare caselle di testo? Non potrebbe andar bene una cella o più celle (magari unite)?

    Se riesci a dare qualche dettaglio in più forse ci possiamo provare.

    Alfredo





  • di alfrimpa data: 23/03/2015 14:10:48

    Alla fin fine la casella di testo da te inserita è solo una "forma" a sé stante all'interno della quale è possibile scrivere qualcosa ma quel "qualcosa" non è (per quanto ne sappia io) gestibile successivamente né con gli strumenti classici di Excel né con il VBA.

    Inutile dire che sarei ben felice di essere smentito.

    Alfredo





  • di alfrimpa data: 23/03/2015 14:14:40

    Ho provato anche a registrare una macro per colorare lo sfondo della casella ma il Registratore non ha registrato (perdona il gioco di parole) nulla

    Mi sa che devi rinunciare alle caselle di testo

    Alfredo





  • di alfrimpa data: 23/03/2015 14:45:40

    Ciao Sandy

    Forse sono riuscito a trovare una strada (e mi sono smentito da solo
    A tra poco

    Alfredo





  • di alfrimpa data: 23/03/2015 14:55:40

    Ciao Sandy

    Ti ho riallegato il file (è quello in alto a destra) dove modificando il testo della CasellaDiTesto 1 presente sul foglio 1 e selezionando il Foglio 2 la CasellaDiTesto ivi presente si modifica prendendo il testo della casella del foglio1.

    Sotto è riportato il codice utilizzato che va inserito nel modulo del foglio 2.

    Provalo un po' e dimmi cosa ne pensi.

    Alfredo
     
    Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    Worksheets("Foglio2").Shapes("CasellaDiTesto 1").TextFrame.Characters.Text = Worksheets("Foglio1").Shapes("CasellaDiTesto 1").TextFrame.Characters.Text
    Application.ScreenUpdating = True
    End Sub






  • di alfrimpa data: 23/03/2015 15:31:01

    Oppure, ancora meglio, per evitare di dover selezionare il foglio2 si può associare il codice all'evento SelectionChange del foglio1

    La macro è da inserire nel modulo del foglio1

    Se hai dubbi chiedi pure

    Alfredo
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    Worksheets("Foglio2").Shapes("CasellaDiTesto 1").TextFrame.Characters.Text = Worksheets("Foglio1").Shapes("CasellaDiTesto 1").TextFrame.Characters.Text
    Application.ScreenUpdating = True
    End Sub
    






  • di alfrimpa data: 23/03/2015 15:32:24

    Ovviamente, se decidi per questa seconda macro va cancellata quella associata all'evento Activate del foglio2.

    Alfredo





  • di Mister_x (utente non iscritto) data: 23/03/2015 15:42:58

    ciao alfredo

    provata e testata su tre fogli, questa a mio parere e' la soluzione ideale per fare questo lavoro di collegamento della casella di testo in foglio1 alle altre di qualsiasi foglio

    PS ultima sub() proposta

    ciao





  • di alfrimpa data: 23/03/2015 15:50:27

    Ciao Mister_x Ti ringrazio e detto da Te (so quanto sei bravo con il vba) il complimento assume ancora più valore

    Però quanto è "contorto" sto VBA; mi chiedo ma perché per definire le stesse cose si usano per oggetti diversi proprietà e metodi diversi?

    Non è stato facile arrivare al "TextFrame.Characters.Text "; ma non si poteva usare un ben più banale "Value" anche per le Shapes? Bah.

    Alfredo





  • di alfrimpa data: 23/03/2015 15:54:04

    Ovviamente parlo di mamma Microsoft

    Pur essendoci gli strumenti tipo il Visualizzatore degli Oggetti o la Finestra Immediata è come navigare su un mare in tempesta su un giunco.

    Comunque aspettiamo il definitivo responso di Sandy.

    Alfredo





  • di Sandy1988 (utente non iscritto) data: 23/03/2015 16:08:15

    Ho scaricato il file, ora lo provo e poi ti dico. La casella di testo mi serve per scrivere del testo più o meno lungo (si tratta di parte di una relazione medica, che potrebbe occupoare una decina di righe). Ho visto che il file è in formato rar, qui in ufficio non so se riesco ad aprirlo, al limite provo stasera da casa. Intanto ti ringrazio..



  • di alfrimpa data: 23/03/2015 16:13:02

    Purtroppo per allegare file con macro sul forum è necessario zipparli.

    Resto in "trepida" attesa

    Alfredo





  • di alfrimpa data: 23/03/2015 16:15:11

    Comunque utilizza la seconda macro che ti ho proposto perché secondo me (ed anche Mister_x) va meglio.

    Alfredo





  • di Sandy1988 (utente non iscritto) data: 23/03/2015 16:21:28

    Mi sembra che funzioni!! Ora devo adattarla al mio foglio di lavoro. Da quello che ho capito, ma ti prego di correggermi se sbaglio, devo prima creare le caselle di testo (una per ciascun foglio), e poi devo inserire la tua macro (la seconda che mi hai inviato) nel modulo del primo foglio (per dirla chiaramente, quello in cui inserisco la mprima casella di testo in cui vado a scrivere). Guardando il tuo file mi è però venuto un dubbio. Vedo che tu hai registrato una Macro1 ed una Macro2: copio tutto come sta, o copio solo la Macro1 o solo la Macro2?? Grazieee...



  • di alfrimpa data: 23/03/2015 16:30:03

    No Sandy macro1 e macro2 erano prove che avevo fatto e puoi cancellarle.

    Nell'Editor di VBA in alto a sinistra fai doppio click su foglio 1

    Poi nella finestra a destra nella tendina in alto a destra seleziona WorkSheet ed in quella a destra SelectionChange

    Ti apparirano due righe:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    End Sub

    Al loro interno va incollato il codice come mostrato sotto

    Ovviamente se i fogli sono più di due il codice va integrato per la gestione delle caselle di testo presenti sugli altri fogli.

    Pensi di essere in grado di farlo?

    Alfredo


     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    Worksheets("Foglio2").Shapes("CasellaDiTesto 1").TextFrame.Characters.Text = Worksheets("Foglio1").Shapes("CasellaDiTesto 1").TextFrame.Characters.Text
    Application.ScreenUpdating = True
    End Sub
    






  • di alfrimpa data: 23/03/2015 16:35:55

    Questa macro che ti propongo effettua l'operazione per tutti i fogli presenti nella cartella di lavoro (sempre che su di essi vi sia una casella di testo denominata "CasellaDiTesto 1" e va inserita come sempre nel modulo del foglio 1

    Alfredo
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    For i = 2 To ThisWorkbook.Sheets.Count
    Worksheets("Foglio" & i).Shapes("CasellaDiTesto 1").TextFrame.Characters.Text = Worksheets("Foglio1").Shapes("CasellaDiTesto 1").TextFrame.Characters.Text
    Next i
    Application.ScreenUpdating = True
    End Sub
    






  • di Sandy1988 (utente non iscritto) data: 23/03/2015 16:51:10

    Sono proprio nel pallone..allego il mio file (ho tolto gli altri fogli che qui non interessano)...sperando in un aiuto decisivo....



  • di alfrimpa data: 23/03/2015 18:06:39

    Appena a casa ti riallego il file completo

    Alfredo





  • di alfrimpa data: 23/03/2015 18:36:40

    Ciao Sandy

    Ho visto il tuo file e ti chiedo: i fogli su cui operare saranno sempre due? O potranno essere di più (per altri anni)?

    In tal caso, le caselle di testo degli altri fogli dovranno sempre prendere il valore dalla prima oppure dovranno fare riferimento a quella del foglio (anno) precedente?

    Alfredo





  • di alfrimpa data: 23/03/2015 19:39:09

    Ciao Sandy

    Ti allego due file: il tuo con inserita la macro ed un altro (identico) nel quale non ho utilizzato caselle di testo ma celle unite in una sola e nel foglio Visite2016 ho scritto =Visite2015!A17

    Questa seconda strada mi sembra la più semplice.

    Comunque "il cliente ha sempre ragione" e dovrai essere tu a dire quale delle due alternative preferisci.

    Alfredo