@ Chris Neilsen fornito la soluzione più pratica ed elegante per il problema (il suo frammento di codice seguente):
Sheets("XYZ").Range("A2") = Sheets("XYZ").Range("A1").Value
Al fine di indagare e comprendere la possibile causa di questo strano comportamento (può essere un bug) dell'oggetto Range, ho postato commenti di coppia, che riassumiamo di seguito:
C'è una differenza concettuale tra l'espressione originale (vedi sotto):
Sheets("XYZ").Range("A2") = Sheets("XYZ").Range("A1")
e soluzione proposta da @Chris Neilsen, vale a dire: espressione originale viene implicitamente assegnando var oggetto Range (essenzialmente, un puntatore) a un altro oggetto Range, come mostrato nel seguente frammento di codice con assegnazione esplicita:
Set rng = Sheets("XYZ").Range("A1")
Sheets("XYZ").Range("A2") = rng
mentre la soluzione proposta passa esplicitamente la proprietà value. Tuttavia, il motivo per cui l'assegnazione di un oggetto Range non è riuscita per un valore con string.Lunghezza> 8202 non è al momento chiaro (potrebbe essere causato da alcune sfumature interne dell'implementazione dell'oggetto Range di Excel).
Grazie mille per aver postato questa interessante domanda e una discussione fruttuosa. saluti,
fonte
2014-11-23 18:32:23
Come da riferimento per Excel 2010: "Numero totale di caratteri che una cella può contenere: 32.767 caratteri" (http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010342495.aspx) Quale versione di Excel stai usando?Inoltre, controlla la presenza di un carattere speciale nella cella. Cordiali saluti, –
@AlexBell - Sto usando solo Excel 2010. Non so perché mi limita a solo 8202 caratteri. –
Come ti ho detto, controlla i caratteri speciali in quella posizione. Inoltre, per cominciare: costruisci una stringa di prova di soli alfanumerici più lunghi di 8202 caratteri e vedi come funziona. Cordiali saluti, –