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 Score: 0 | Risposta

    DeletedUser
    Bloccato
      13 pts

      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 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        238 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 Score: 0 | Risposta

        DeletedUser
        Bloccato
          13 pts

          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 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            238 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 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              238 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 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                238 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 Score: 0 | Risposta

                DeletedUser
                Bloccato
                  13 pts

                  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 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    238 pts

                    Non preoccuparti, adesso è anche una mia curiosità 🙂

                    Quindi, quando puoi e se vuoi siamo qui.

                    #7501 Score: 0 | Risposta

                    DeletedUser
                    Bloccato
                      13 pts

                      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 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        238 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 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          238 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 Score: 0 | Risposta

                          DeletedUser
                          Bloccato
                            13 pts

                            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 Score: 0 | Risposta

                            vecchio frac
                            Senior Moderator
                              238 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 Score: 0 | Risposta

                              DeletedUser
                              Bloccato
                                13 pts

                                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 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  238 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 Score: 0 | Risposta

                                  DeletedUser
                                  Bloccato
                                    13 pts

                                    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 Score: 0 | Risposta

                                    vecchio frac
                                    Senior Moderator
                                      238 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 Score: 0 | Risposta

                                      vecchio frac
                                      Senior Moderator
                                        238 pts

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

                                        #7537 Score: 0 | Risposta

                                        zer0kelvin
                                        Partecipante
                                          5 pts

                                          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 Score: 0 | Risposta

                                          vecchio frac
                                          Senior Moderator
                                            238 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 Score: 0 | Risposta

                                            DeletedUser
                                            Bloccato
                                              13 pts

                                              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 Score: 0 | Risposta

                                              DeletedUser
                                              Bloccato
                                                13 pts

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

                                                #7770 Score: 0 | Risposta

                                                DeletedUser
                                                Bloccato
                                                  13 pts

                                                  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 Score: 0 | Risposta

                                                  vecchio frac
                                                  Senior Moderator
                                                    238 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: