5k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo ich habe ein kleines Problem und zwar möchte ich von einem Tabellenblatt eine Werteversion erstellen. Dafür habe ich auch ein Makro geschrieben, allerdings ist mir dann aufgefallen, dass Excel nur max 255 Zeichen in einem Textfeld kopiert. Gibt es dafür eine Lösung in Excel und wenn ja wie kann ich das im Makro einbauen.
Vielen Dank für Eure Hilfe!

Gruß seb

Private Sub CommandButton1_Click()
Dim objCopysheet As Worksheet

On Error Resume Next
Set objCopysheet = Worksheets("Report HC")
On Error GoTo 0

If Not objCopysheet Is Nothing Then Exit Sub 'Blatt ist schon vorhanden, Ausstieg

With ActiveSheet
.Unprotect
.Copy After:=Sheets(1)
ActiveSheet.Name = "Report HC"
.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
End With

With Worksheets("Report HC").Range("A1:BD204")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With

Application.CutCopyMode = False

End Sub

7 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

zumindest bis Excel 2003 ist bei 255 Schluss, da du aber keine Angaben zur Version machst, kann dir auch keiner genauere Auskünfte geben.

Vielleicht hilft eine bessere Problemdarstellung zu einer anderen Lösung oder idee

Gruß

Helmut
0 Punkte
Beantwortet von
Hallo Helmut,

danke erstmal für Deine Antwort. In der Tat es handelt sich um Excel 2003.

Ich habe das Problem, dass wenn in einer Zelle mehr als 255 Zeichen sind, Excel den Text nach den entsprechenden 255 Zeichen nicht mehr kopiert. Ich habe mir bisher geholfen, dass ich ein Textfeld eingefügt habe. Dann funktioniert es, aber es muss doch eine elegantere Lösung geben.

Gruss

Seb
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallö,

da du keie genauen Angaben machst was du genau willst, wirdes keine Lösung geben.

Wir sind keine Hellseher und können somit keine Lösung erarbeiten.

Gruß

Helmut
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Seb,

du müsstest dann im Nachhinein in einer Schleife noch einmal über alle Zellen des kopierten Bereichs laufen und wenn der Inhalt eine Länge von 255 hat, diesen durch den Inhalt der Originalzelle ersetzen:

Sub Kopieren()
Dim rngZelle As Range
With ActiveSheet
.Unprotect
.Copy After:=Sheets(1)
ActiveSheet.Name = "Report HC"
With Worksheets("Report HC").Range("A1:BD204")
.Copy
.PasteSpecial xlValues
For Each rngZelle In .SpecialCells(xlCellTypeConstants)
If Len(rngZelle) = 255 Then rngZelle = Worksheets("Tabelle1").Range(rngZelle.Address)
Next rngZelle
End With
.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
End With
End Sub

"Tabelle1" im Code ist die Ausgangstabelle, aus der das Duplikat erstellt wird - musst du an deine Bedingungen anpassen.

Bis später,
Karin
0 Punkte
Beantwortet von
hi karin,

vielen dank, ich werde die schleife mal morgen ausprobieren!

gruß

Seb
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

kann das problem nicht nachvollziehen,habe mit excel 2000, 600 zeichen in der zelle und liess sich auch mit 600 zeichen kopieren ?!

gruss nighty
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

doch, das passiert auch in Excel 2000, denn das Problem liegt beim Kopieren des Tabellenblattes. Wenn du das Blatt von Hand kopierst, erscheint auch die Meldung, dass Zellen mehr als 255 Zeichen beinhalten und diese Zellen auf 255 Zeichen reduziert werden. Man kann das Ganze natürlich umgehen, indem man es so macht wie der folgende Hinweis in eben dieser Meldung: erst ein leeres Blatt erstellen und dann alle Zellen kopieren. Da offensichtlich auch die Formate mit kopiert werden sollen, kann man das in einem zweiten Schritt tun.
Erst ab Excel 2007 tritt dieses Problem der 255 Zeichen nicht mehr auf.

Bis später,
Karin
...