2013-06-11 16 views
6

prima di tutto, nuovo in VBA.vba function: stringa di ritorno con newline

Sto implementando questa soluzione how-to-merge-all-column-into-one-cell-in-excel[stackoverflow], ma ho un seguito.

A1:I 
A2:am 
A3:a 
A4:boy 

la mia uscita è: Iamaboy ma vorrei in una cella:

I 
am 
a 
boy 

funzioni non sembrano tornare stringhe con vbNewLine, chr(10) o chr(13) ...

+4

è necessario impostare 'avvolgere Text' del tuo cellulare manualmente in Excel, anche. –

+0

http://www.ozgrid.com/forum/showthread.php?t=16059 –

risposta

3

Uno di codice:

Range("B1").Formula = join(application.transpose(Range("A1:A4")),vblf) 
0

basta utilizzare il Separatore CHAR (10):

=ConcatenateRange(A1:A4;CHAR(10)) 
+0

Direi che preferirò questo, perché sembra che dovrebbe funzionare, ma non è così. –

+0

@DanielCook Hai provato CHAR (13)? E ricalcoli il foglio di lavoro (F9)? –

-1

Ho bloccato questo e ha funzionato una volta che ho usato "wrap text".

0

Usa:

=A1&"[Alt+Enter]"&A2&"[Alt+Enter]"&A3&"[Alt+Enter]"&A4 
1

La risposta è, come tlewin detto

=ConcatenateRange(A1:A4,CHAR(10)) 

Oppure, in alternativa, utilizzando [Alt-Invio] si potrebbe scrivere in questo modo

=ConcatenateRange(A1:A4," 
") 

" Ma aspetta, "tu dici:" L'ho provato e non funziona! "
Bene, si vede, quando si immette manualmente qualcosa come I[alt-enter]am[alt-enter]a[alt-enter]boy in Excel o si esegue anche un'istruzione come [A1] = "I" & vbNewLine & "am" Excel cambia automaticamente la formattazione delle celle e attiva il ritorno a capo automatico. Il ritorno a capo automatico è richiesto per per visualizzare interruzioni di riga in una cella. Tuttavia, se si restituisce una stringa con un'interruzione di riga in essa contenuta da un UDF Excel, il formato non viene aggiornato.

Mi vengono in mente due possibili soluzioni:

  1. abilitare manualmente involucro di parola su qualsiasi cella che si utilizza questa funzione nel
  2. (Non raccomandato) Conservare il riferimento nel Application.Caller durante la chiamata ConcatenateRange UDF, quindi impostare una chiamata Application.OnTime(now, "AddWordWrap") e scrivere la subroutine AddWordWrap in modo che utilizzi il riferimento memorizzato per aggiungere la formattazione del wordwrap alla cella (questo perché non è possibile aggiornare il formato della cella in una UDF). Questo metodo è bacato e problematico.
0

provare a utilizzare questa linea

Sheet1.Range("A1").Value = "sgar" & Chr(10) & "saha" 
0
Cells(row, column) = "current line" & Chr(10) & "new line" 
Problemi correlati