Ho solo bisogno di ottenere i primi due linee come "wrapedtext1wrappedtext2" .È possibile ???
Sì potrebbe essere possibile, ma non v'è NO SEMPLICE modo per realizzarla. Ci sono molti fattori che dovrai considerare.
1) Altezza riga in pixel
2) Tipo di Font Size e
3) Interlinea
4) E 'la cella unita?
5) è la cella in stato Adatta
6) è tutto il testo in modalità normale o ha alcun corsivo/grassetto/Sottolineato (s) ecc ecc
Considerate questa istantanea
Per esempio, Altezza riga nel pixel possono essere derivati da
Debug.Print Range("A1").Height * (24/18)
Dimensione carattere nel caso di cui sopra può essere raggiunto da questo
Debug.Print Range("A1").Font.Size
Ma la sfida è ciò che sarebbe accaduto nello scenario di seguito?
A mio parere, sarebbe troppo di un dolore per ottenere quello che vuoi.La parte migliore sarebbe utilizzare ALT + Enter
per inserire interruzioni di riga e quindi recuperare il testo.
FOLLOWUP
Le corde vengono inserite nella cella avvolto tramite codice vba. Allora, come inserirai i dati premendo alt + invio? - 1355 4 ore fa
In un tale scenario, è possibile adottare un approccio simile pure.
Sub Sample()
Dim strg As String
strg = "This is a sample" & vbCrLf & _
"sentence which is" & vbCrLf & _
"in Cell A1 and the" & vbCrLf & _
"text is separated" & vbCrLf & _
"with line breaks"
With Range("A1")
.Columns(1).ColumnWidth = 16.86
.Font.Name = "Calibri"
.Font.Size = 11
.Value = strg
End With
End Sub
NOTA: Per quanto sopra si dovrà registrare una macro e vedere qual è il tipo di carattere, dimensione del carattere e la colonna di larghezza che può assumere una particolare formattazione. Di nuovo, dovrai considerare il fatto che l'esempio che ho dato sopra è per una cella non formattata in un nuovo foglio. Se stai scrivendo su una cella unita o su una cella per formattazione, dovrai modificare di conseguenza il codice sopra riportato che può essere facilmente ottenuto registrando una macro. Sono anche supponendo che il livello di zoom è impostato su 100%
ISTANTANEE
HTH
Sid
Hai provato ad afferrare il contenuto di quella cella e a vedere esattamente quali caratteri contiene - stampando i codici ASCII, ad esempio, utilizzando la funzione Asc()? Questo potrebbe darti un indizio su come ottenere ciò che vuoi. – JTeagle
@JTeagle: Ho anche questo problema. Dopo aver impostato la proprietà wrapText nella cella, il contenuto della cella viene automaticamente avvolto con la larghezza della colonna. Ad esempio, in realtà non inseriamo interruzioni di riga. Sono in grado di estrarre 2 righe quando inseriamo i dati premendo Alt + Invio.Ma qui sta semplicemente impostando la proprietà text wrap sulla cella – 1355
@ 1355 - Capisco. Temo che potresti avere delle difficoltà qui visto che sebbene tu possa probabilmente ottenere la larghezza della cella e persino il font in uso, VBA non fornisce (a mia conoscenza) un modo per "misurare" il testo come è possibile in C++ e possibilmente in VB nativo . Posso chiederti perché hai bisogno solo delle prime due linee? Dal momento che la larghezza della cella (e quindi, quanto si adatta) può essere facilmente modificata in fase di esecuzione, sembra una cosa leggermente arbitraria da fare? – JTeagle