Excel e gli applicativi Microsoft Office [Excel Mac 2011] Multilinea in userform diventa linea singola nel foglio

Login Registrati
Stai vedendo 24 articoli - dal 1 a 24 (di 24 totali)
  • Autore
    Articoli
  • #7473 Risposta

    viger
    Partecipante

      Ciao a tutti!
      Mi sono appena iscritto, sono un utente base e per le mie necessità di solito mi basta consultare il patrimonio di soluzioni online. Ma questa volta non ne esco, complice, anche, il disgraziato Excel per Mac 2011. Su windows nessun problema, ma il destinatario usa un Mac...

      Ho creato uno userform per archiviare dei dischi, semplice e funzionale. Quando si clicca il pulsante di registrazione, i dati scritti nei campi dello userform vengono riportati nel foglio, e avanti così.

      Il problema su Mac (ho fatto una versione appositamente, perché ciò che funziona su win non gira su Mac e viceversa) è sui campi  multilinea dello userform: ho settato l'a-capo con la combinazione di tasti shift+enter e funziona tutto, aggiungo le righe e nessun problema. Ma quando lo userform invia i dati al foglio, nella rispettiva cella viene scritto tutto su una riga! Ho formattato le celle del foglio con il testo a capo, ma l'interruzione di riga dello userform viene scritta come spazio nelle celle. Su win nessun problema, come lo vedo nello userform così viene riportato nelle celle.

      Qualche idea? Come faccio a fargli capire che una interruzione di riga nello userform corrisponde a una interruzione di riga anche nella rispettiva cella? 

      #7480 Risposta

      vecchio frac
      Moderatore
        16 pts

        In Excel per Windows il ritorno a capo in cella si fa, manualmente, con Alt+Invio e corrisponde a vbLf = Chr$(10).

        Non ho un Mac per fare il test quindi dimmi: come si fa, manualmente, un ritorno a capo in cella in Excel per Mac?

        La mia idea è che prima di inviare i dati alla cella, devi fare un replace nella stringa del carattere di line feed e inserire il codice carattere che in Mac forza l'alinea nella cella.

        #7483 Risposta

        viger
        Partecipante

          Ciao vecchio frac e grazie della risposta.

          Nel Mac il ritorno a capo dipende dalle situazioni: nello userform puoi settare (nelle proprietà del textbox) il ritorno a capo con il solo enter o con shift+enter, e funziona esattamente come su win. Io ho optato per la seconda, così si può usare enter per spostarsi in sequenza tra i campi. Nelle celle non ricordo bene ora (scrivo da win), ma c'è anche lì una combinazione con un tasto in più. Ne ho memoria vaga e dovrei provare, forse cmd+alt+enter. Se serve poi ti dico. Comunque è possibile anche lì.

          La mia idea è che prima di inviare i dati alla cella, devi fare un replace nella stringa del carattere di line feed e inserire il codice carattere che in Mac forza l'alinea nella cella.

          Infatti, anche io pensavo una cosa così, ossia di dire nel codice vb che il ritorno a capo nel textbox (e quindi il carattere che lo rappresenta) deve essere tale anche nelle celle (e convertirlo in tale carattere), ma non so come si faccia una cosa così. Intuisco cosa dovrei dire ma non so come dirlo!

          Cercando in rete ci sono tre opzioni per andare a capo:

          Constant              Value              Description
          ----------------------------------------------------------------
          vbCr                  Chr(13)            Carriage return
          vbCrLf                Chr(13) & Chr(10)  Carriage return–linefeed combination
          vbLf                  Chr(10)            Line feed

          vbCr : - return to line beginning
          Represents a carriage-return character for print and display functions.

          vbCrLf : - similar to pressing Enter
          Represents a carriage-return character combined with a linefeed character for print and display functions.

          vbLf : - go to next line
          Represents a linefeed character for print and display functions.

           

          #7486 Risposta

          vecchio frac
          Moderatore
            16 pts

            viger wrote:Nel Mac il ritorno a capo dipende dalle situazioni: nello userform

            Mi sembrava di essere stato chiaro ma mi sbagliavo: volevo sapere come si forza in Mac il ritorno a capo manuale durante l'editing manuale in una cella. Non in un campo testo di un userform.

            In Win si usa Alt-Invio. E col Mac?

            #7487 Risposta

            vecchio frac
            Moderatore
              16 pts

              viger wrote:Nelle celle non ricordo bene ora (scrivo da win), ma c'è anche lì una combinazione con un tasto in più

              Ecco la risposta 🙂

              #7489 Risposta

              vecchio frac
              Moderatore
                16 pts

                Dovresti avere sottomano il Mac e fare questa prova:

                - in una cella vuota digita "A" maisucola

                - poi digita la combinazione di tasti per il ritorno a capo

                - poi digita un'altra "A" maiuscola e conferma ma rimani su questa cella

                - adesso attiva l'editor di codice (che in Windows è la combinazione di tasti Alt-F11)

                - attiva la finestra immediata (Windows: Ctrl-G)

                - digita ?asc(mid(activecell, 2, 1))

                - il valore che ottieni è il linefeed su Mac (dovrebbe essere 10)

                - ora digita ?asc(vbLf), asc(vbNewLine) e dimmi che valori ottieni

                #7491 Risposta

                viger
                Partecipante

                  Perfetto, tutto chiaro, nonostante la curiosità stasera non sono sicuro di riuscire (non ho il mac qui con me), in caso domani ti aggiorno sicuro. Per intanto grazie mille! 🙂

                  #7492 Risposta

                  vecchio frac
                  Moderatore
                    16 pts

                    Non preoccuparti, adesso è anche una mia curiosità 🙂

                    Quindi, quando puoi e se vuoi siamo qui.

                    #7501 Risposta

                    viger
                    Partecipante

                      Eccomi!
                      Allora, per andare a capo in una cella su Mac (Excel 2011) hai tre opzioni:

                      ctrl+alt+invio
                      cmd+alt+invio
                      ctrl+cmd+invio

                      Ai comandi che mi hai dato, la risposta è identica per tutti e tre gli a capo:

                      ?asc(mid(activecell, 2, 1))
                       13 
                      ?asc(vbLf), asc(vbNewLine)
                       10       13 

                      Su Win il primo dato è in effetti 10, su Mac 13.

                       

                      #7512 Risposta

                      vecchio frac
                      Moderatore
                        16 pts

                        viger wrote:Su Win il primo dato è in effetti 10, su Mac 13.

                        Lo sapevo o meglio me lo immaginavo 🙂

                        Adesso il prossimo test: posizionati in cella vuota e sempre in finestra immediata:

                        activecell = "A" & vbnewline & "B"

                        Questo dovrebbe far apparire A e B nella cella attiva separate da ritorno a capo.

                        Se funziona, dovremo poi esaminare il contenuto della textbox per vedere come viene codificato l'a capo.

                         

                        #7513 Risposta

                        vecchio frac
                        Moderatore
                          16 pts

                          viger wrote:Il problema su Mac è sui campi  multilinea dello userform

                          Una osservazione banale: la proprietà Multiline del textbox dello userform è settata su True vero?

                          Anche il formato "testo a capo" della cella deve essere impostato.

                          #7519 Risposta

                          viger
                          Partecipante

                            vecchio frac wrote:
                            activecell = "A" & vbnewline & "B"

                            Questo dovrebbe far apparire A e B nella cella attiva separate da ritorno a capo.

                            Confermo, funziona! A e B correttamente scritti nella cella.

                            vecchio frac wrote:
                            Una osservazione banale: la proprietà Multiline del textbox dello userform è settata su True vero?

                            Sì, confermo. Infatti sullo userform funziona tutto bene, è quando il modulo riporta i dati nello spreadsheet che vengono persi gli a capo.

                            vecchio frac wrote:
                            Anche il formato "testo a capo" della cella deve essere impostato.

                            Confermo anche questo

                            #7520 Risposta

                            vecchio frac
                            Moderatore
                              16 pts

                              Allego un file, avvia l'userform premendo il pulsantone e scrivi qualcosa nella textbox, anche andando a capo con la tastiera nel modo che conosci. In tempo reale il contenuto della cella A1 si modifica e riflette il contenuto della textbox.

                              Allegati:
                              You must be logged in to view attached files.
                              #7522 Risposta

                              viger
                              Partecipante

                                Fatto.
                                Scrive in tempo reale, va a capo nel textbox ma converte in spazio nella cella. Ho provato con tutte le combinazioni possibili di a capo, ma nella cella converte sempre in spazio. Interessante che la combinazione alt+cmd+invio inserisce due a capo (quindi uguale a shift+invio premuti due volte), non me ne ero mai accorto! Però non cambia nulla, a parte che aggiunge due spazi, uno per ogni a capo. Se faccio cinque a capo, mi converte in cinque spazi.

                                #7523 Risposta

                                vecchio frac
                                Moderatore
                                  16 pts

                                  Aggiungi al codice queste tre righe:

                                  Private Sub TextBox1_AfterUpdate()
                                      Range("A1") = Replace(TextBox1, Chr(13), vbNewLine)
                                  End Sub

                                  e commenta il codice che intercetta il Change nella textbox così non interferisce:

                                  'Private Sub TextBox1_Change()
                                  '    Range("A1") = TextBox1
                                  'End Sub

                                  Peccato non poter fare le prove direttamente 🙁

                                  #7528 Risposta

                                  viger
                                  Partecipante

                                    vecchio frac wrote:
                                    Peccato non poter fare le prove direttamente

                                    Eh, ti capisco, così è uno stillicidio...
                                    Comunque ora funziona! Ma ho dovuto sostituire il Chr(13) con Chr(10), altrimenti continuava a convertire in spazi. Ho provato con tutti gli a capo disponibili e va 🙂

                                    Ho fatto un po' di prove sul mio file, ma senza successo, ne so troppo poco e purtroppo il file non gira su Win. In pratica non so come far sì che mi aggiorni i campi multiline (sono tre). Te lo allego comunque, magari ci risparmiamo un po' di fatica (tu soprattutto). Cavolo avessi tempo mi metterei a studiare un po', divertimento a parte, è utile! E' che se comincio poi mi prende la mano...

                                    Allegati:
                                    You must be logged in to view attached files.
                                    #7530 Risposta

                                    vecchio frac
                                    Moderatore
                                      16 pts

                                      viger wrote:ho dovuto sostituire il Chr(13) con Chr(10)

                                      Già già e pensare che lo sapevo, corrisponde a vbLf (line feed), mentre per il Mac è solo Chr(13) cioè vbCr... benedetti sistemi 🙂

                                      viger wrote:purtroppo il file non gira su Win

                                      uhm 🙁

                                      #7531 Risposta

                                      vecchio frac
                                      Moderatore
                                        16 pts

                                        Mi dà un curioso errore di autorizzazione negata in apertura del form... domani controllo meglio 😛

                                        #7537 Risposta
                                        zer0kelvin
                                        zer0kelvin
                                        Partecipante

                                          Ciao a tutti.

                                          vecchio frac wrote:Mi dà un curioso errore di autorizzazione negata in apertura del form... domani controllo meglio 😛

                                          L'errore è dovuto al fatto che nella combobox è stato impostato un valore per RowSource.

                                          Quando si utilizza questa proprietà, la proprietà List non può essere modificata.

                                          PS: per generare una versione del programma che sia eseguibile su entrambe le piattaforme è possibile usare la compilazione condizionale.

                                          #If Mac Then
                                              'codice per Mac
                                          #Else
                                              'codice per Windows
                                          #End If
                                          #7539 Risposta

                                          vecchio frac
                                          Moderatore
                                            16 pts

                                            zer0kelvin wrote:è possibile usare la compilazione condizionale

                                            E' un'ottima idea e da implementare certamente visto che si intende lavorare su sistemi diversi, ma secondo me non c'è problema di compatibilità o conflitto nel caso particolare. E' che sembra che Mac non applichi il "testo a capo" per la cella :/

                                            #7748 Risposta

                                            viger
                                            Partecipante

                                              Ciao ragazzi, nessuna novità?
                                              Io sono andato avanti col mio file e ormai mi manca solo questo passo (spero). Peccato perché su win funziona tutto senza tribolare, ma il passaggio tra le due piattaforme è disastroso... Il codice VBA lo importa bene, ma gli oggetti...
                                              Lo UserForm modificato e salvato su Mac manco esiste più in win. Follia. Spero le nuove versioni siano migliorate!

                                              #7749 Risposta

                                              viger
                                              Partecipante

                                                Aspetta, ho postato prima di pensare, faccio due tentativi e vi faccio sapere...   

                                                #7770 Risposta

                                                viger
                                                Partecipante

                                                  Tutto a posto!
                                                  Ci ho messo un po' perché ho intanto completato tutto il resto.
                                                  Ho inserito nel codice VBA (dove necessario) questa riga

                                                  Replace(nome_mio_textbox, Chr(10), vbNewLine)

                                                  e va tutto alla grande! E' venuto proprio carino e pratico.
                                                  Grazie mille! 

                                                  OT: Excel per Mac 2011 in sviluppo VBA è quasi a livello di inutilizzabilità, lentissimo, sembra di lavorare su un mattone. Boh, spero per loro che le nuove versioni siano migliorate

                                                  #7771 Risposta

                                                  vecchio frac
                                                  Moderatore
                                                    16 pts

                                                    Mi pareva che lo avessimo già provato. Comunque sì, il line feed viene interpretato in due modi diversi.

                                                    Non ho mai messo le mani su un Mac, non mi sbilancio sulle performances 🙂

                                                  Login Registrati
                                                  Stai vedendo 24 articoli - dal 1 a 24 (di 24 totali)
                                                  Rispondi a: [Excel Mac 2011] Multilinea in userform diventa linea singola nel foglio
                                                  Gli allegati sono permessi solo ad utenti REGISTRATI
                                                  Le tue informazioni:



                                                  vecchio frac - 592 risposte

                                                  albatros54
                                                  albatros54 - 507 risposte

                                                  Marius44
                                                  Marius44 - 270 risposte

                                                  patel
                                                  patel - 257 risposte

                                                  Luca73
                                                  Luca73 - 194 risposte

                                                  ChatBox per richiedere velocemente assistenza a semplici problematiche

                                                  Devi fare il login per scrivere nella chat

                                                  0
                                                  1