testo su due righe



  • testo su due righe
    di Mark56 (utente non iscritto) data: 02/12/2017 20:38:59

    Salve a tutti, dovrei risolvere un problena con un file excel, e non so come fare, provo a spiegare il problema da risolvere
    Sul folio1, dalla cella E25:E56 e dalla E88:E119
    se io inserisco del testo in una delle seguenti celle ed il twsto inserito è superiore a 33 caratteri conpresi gli spazie possibile dall lettera 34 nettere un trattino - eportare i caratteri in eccesso sulla riga successiva
    esempio Cella E25
    Salve a tutti, dovrei risolvere u-
    Cella E26
    n problena con un file excel
    se possibile mandare a capo senza pezzare la parola tipo un tutto sulla riga E26




  • di patel data: 03/12/2017 08:53:33

    prova con Formato cella, allineamento, testo accapo dopo aver dimensionato opportunamente la larghezza della colonna





  • di Mark56 (utente non iscritto) data: 03/12/2017 10:04:33

    grazie patel per la risposta, ma quello che vorrei fare io e un po diverso del testo a capo, io vorre che il testo passasse sulla riga successiva senza allargare la riga e portare il testo a capo, in sintesi se io scrivo nella cella E25 e scrivo più di 33 caratteri i caratteri dal 34 in poi si devono trasferire sulla cella E26, non so se si possa fare.



  • di ninai data: 03/12/2017 10:39:17

    ciao
    sembrerebbe debba bastare:
    =STRINGA.ESTRAI(E25;34;100)

    il 100 lo puoi aumentare a piacere in base a quanto possono essere lunghe le stringhe



  • di Mark56 (utente non iscritto) data: 03/12/2017 11:02:00

    Ciao ninai, ma la formula dove devo inserirla? dato che il testo va digitato nella cella E25, dovrei usare una cella di suppoorto? non sò come si possa fare potresti fare un esempio? Scusa ma non riesco a capire come possa fare.



  • di Marius44 data: 03/12/2017 14:56:26

    Salve a tutti
    sempre se ho capito la domanda, io andrei con VBA.
    Per meglio rendere il concetto ho limitato la riga a 25 caratteri (ma, ovviamente, si può cambiare) ed allego il file su cui basta cliccare sul pulsante.

    Fai sapere. Ciao,
    Mario
     
    Sub NextRow()
    ur = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To ur
        txt = Cells(i, 1)
        lng = Len(txt)
        If lng > 25 Then
            mx = lng / 25
            For j = 1 To lng
                a = a + 1
                Cells(a, 5) = Mid(txt, j, 25)
                j = j + 24
            Next j
        Else
            a = a + 1
            Cells(a, 5) = txt
        End If
    Next i
    End Sub



  • di Mister_x (utente non iscritto) data: 03/12/2017 15:32:33

    ciao

    metto anche la mia sub() che si avvia col inserimento nelle celle

    ciao
     
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("E25:E56,E88:E119")) Is Nothing Then Exit Sub
    On Error Resume Next
    Application.EnableEvents = False
    Dim str As String
    Dim start As Long
    start = 34  '' MODIFICARE A PIACIMENTO l'unghezza stringa
    str = Target.Value
    If Len(str) > start Then
     Cells(Target.Row, "E") = Mid(str, 1, start - 1) & "-"
    End If
    Application.EnableEvents = True
    Cells(Target.Row + 1, "E") = Mid(str, start, Len(str))
    End Sub
    
    
    






  • di Mister_x (utente non iscritto) data: 03/12/2017 17:33:39

    riciao

    piccola variazione alla sub di prima per ritorno a capo

    ciao
     
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("E25:E56,E88:E119")) Is Nothing Then Exit Sub
    On Error Resume Next
    Application.EnableEvents = False
    Dim str As String, str1 As String
    Dim start As Long
    start = 34  '' MODIFICARE A PIACIMENTO l'unghezza stringa
    str = Target.Value
    If Len(str) > start Then
    str1 = Mid(str, 1, InStrRev(Mid(str, 1, start - 1), " ", -1))
     Cells(Target.Row, "E") = str1 & "-"
    str = Application.Substitute(str, str1, "")
    Else
     Exit Sub
    End If
    Application.EnableEvents = True
    Cells(Target.Row + 1, "E") = Trim(str)
    End Sub






  • di Mister_x (utente non iscritto) data: 03/12/2017 17:37:09

    ciao

    dimenticato per strada un evento

    ciao

     
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("E25:E56,E88:E119")) Is Nothing Then Exit Sub
    On Error Resume Next
    Application.EnableEvents = False
    Dim str As String, str1 As String
    Dim start As Long
    start = 34  '' MODIFICARE A PIACIMENTO l'unghezza stringa
    str = Target.Value
    If Len(str) > start Then
    str1 = Mid(str, 1, InStrRev(Mid(str, 1, start - 1), " ", -1))
     Cells(Target.Row, "E") = str1 & "-"
    str = Application.Substitute(str, str1, "")
    Else
    Application.EnableEvents = True
     Exit Sub
    End If
    Application.EnableEvents = True
    Cells(Target.Row + 1, "E") = Trim(str)
    End Sub
    






  • di Mark56 (utente non iscritto) data: 03/12/2017 19:18:44

    ho provato la macro di Marius44 e Mister_x, quella che si adatta di più al mio problema e quella di Mister_x svolge egregiamente il lavoro che avevo in mente, comunque ringrazio tutti per l'aiuto formitomi. Comunque se ninai sta seguendo la discussione sarei curioso di conoscere anche la sua idea con la formula, non ho capito dove posso mettere la formula per estrarre il testo? se qualcuno sa come fare, sarei contento di apprendere.



  • di Mark56 (utente non iscritto) data: 04/12/2017 20:56:37

    grazie a tutti per l'aiuto