Zellformatierung fixieren
Hallo,
kann mir vielleicht jemand bei folgendem Problem helfen. Ich möchte aus einem Tabellenblatt Zellen kopieren und in einem anderen einfügen. Dabei soll die Originalformatierung (Schrift, -größe etc.) nicht verändert werden (dürfen), auch nicht, wenn man bei rechtem Mausklick nicht den Befehl "Inhalte auswählen/Werte" benutzt. Wäre für Tipps sehr dankbar, wie ich das per VBA hinkriegen könnte.
lg
Herbert
Antwort schreiben
Antwort 1 von rainberg vom 14.03.2021, 07:44 Options
Hallo Herbert,
folgendes Makro kopiert die Zellinhalte A1:A16 aus Tabelle1 in den gleichen Bereich der Tabelle2, ohne die Formate zu verändern.
Option Explicit
Sub kopieren()
Range("A1:A16").Copy
Sheets("Tabelle2").Select
Range("A1:A16").PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
Range("A1").Select
End Sub
Kopiere den Code in ein Allgemeines Modul und starte ihn aus Tabelle1 heraus.
Gruß
Rainer
Antwort 2 von herbybeatle vom 14.03.2021, 10:04 Options
Hallo Rainer,
danke für Deine Antwort. Diese löst momentan aber noch nicht mein Problem. Habe ein Turnierprogramm in Excel gemacht. Jetzt möchte ich dem User gestatten, aujs bestimmten Tabellenblättern Zellen zu kopieren, um diese dann in einem anderen Blatt wieder einzufügen. Falls der User dies nicht mit "Werte einfügen" macht, so soll die Formatierung aber auch nicht verändert werden.
Bisher habe ich folgendes geschrieben, komme damit aber nicht weiter:
Private Sub TeilnehmerBlitz_change(ByVal Target As Range)
Range("J26:J33").Select
Selection.Interior.ColorIndex = 15
.Pattern = xlSolid
Target.Font
.Name = "Arial"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Selection.Font.Bold = True
Selection.Font.Bold = False
Antwort 3 von rainberg vom 14.03.2021, 10:28 Options
Hallo Herbert,
da kann ich Dir leider nicht helfen.
Gruß
Rainer
Antwort 4 von finger59 vom 14.03.2021, 13:37 Options
Hallo Herbert,
sorry.. ich kenne mich mit VBA auch nicht so aus, aber vielleicht gibt es ja einen einfacheren Weg.
Da ich aus Deiner Anfrage nicht erkennen kann, ob Du immer in das gleiche andere Tabellenblatt die Werte überträgst oder nicht, so mal ein Gedanke, wenn es immer das gleiche Tabellenblatt wäre.
Du möchtest die Orgninalformate aus zB.Tabelle1 in Tab2 mit übernehmen.
Kopiere dazu das Tab1 mit Rechtsklick auf Tabelle1 und dort verschieben/kopieren auswählen. Dann unten links das Kästchen Kopie erstellen und ggf. noch vor eine anderes Tabellenblatt Deiner Wahl setzen lassen. Mit OK bestätigen und Du würdest eine 1:1 Kopie mit dem Namen Tabelle1(2) erhalten.
Wenn nun Daten aus Tab1 nach Tab1(2) kopiert werden, dann ist die Formatierung schon vorhanden.
Vielleicht hilft Dir das Dein Vorhaben zu vereinfachen.
In diesem Sinne.. have a nice Day... Gruß Helmut
Antwort 5 von rainberg vom 14.03.2021, 15:09 Options
Hallo Helmut,
ich habe es so verstanden, dass die Formate des Zielarbeitsblattes erhalten bleiben sollen beim Einfügevorgang.
Gruß
Rainer
Antwort 6 von finger59 vom 14.03.2021, 15:54 Options
@Rainer,
thanx... hast Recht - Schade aber auch...
Bis dann mal wieder.... Gruß Helmut
Antwort 7 von herbybeatle vom 14.03.2021, 17:36 Options
Ja, ihr habt recht. Die Formate des Zielarbeitsblattes sollen erhalten bleiben. Möchte nun das Problem von einer anderen Seite angehen. Mittels Schaltfläche im Tab.blatt "C" eine Zelle kopieren und Werte im Tab.blatt "Teilnehmer-Blitz" einfügen.
Code:
Private Sub CommandButton33_Click()
Sheets("Teilnehmer-Blitz").Unprotect Password:="passwort"
Sheets("C").Unprotect Password:="passwort"
Sheets("C").Range("C6").Copy
Sheets("Teilnehmer-Blitz").Range("J26").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("C").Protect Password:="passwort"
Sheets("Teilnehmer-Blitz").Protect Password:="passwort"
End Sub
Bekomme aber immer eine Fehlermeldung: Laufzeitfehler '1004':
Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden!
Wer weiß Rat?
Antwort 8 von rainberg vom 14.03.2021, 18:18 OptionsLösung
Hallo Herbert,
probier's mal so
Option Explicit
Private Sub CommandButton1_Click()
Sheets("Teilnehmer-Blitz").Unprotect Password:="passwort"
Sheets("C").Unprotect Password:="passwort"
Sheets("C").Range("C6").Copy
Sheets("Teilnehmer-Blitz").Select
ActiveSheet.Range("J26").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("C").Protect Password:="passwort"
Sheets("Teilnehmer-Blitz").Protect Password:="passwort"
End Sub
Gruß
Rainer
Antwort 9 von herbybeatle vom 15.03.2021, 09:42 Options
Hallo Rainer,
danke für Deinen Beitrag! Habe inzwischen folgende andere Möglichkeit gefunden, die funktioniert.
Private Sub CommandButton34_Click()
Sheets("Teilnehmer-Blitz").Unprotect Password:="passwort"
Sheets("C10").Unprotect Password:="passwort"
If Sheets("C10").Range("H8").Value = 3 Then Sheets("Teilnehmer-Blitz").Range("J26").Value = Sheets("C10").Range("C10").Value Else Sheets("Teilnehmer-Blitz").Range("J26").Value = Sheets("C10").Range("C6").Value
Range("D10").Select
Sheets("Teilnehmer-Blitz").Protect Password:="passwort"
Sheets("C10").Protect Password:="passwort"
End Sub
Testhalber habe ich jetzt auch Deine Methode probiert. Funktioniert auch tadellos. Wie ich sehe, führen sehr viele Wege nach Rom ;)
Nochmals danke für die Unterstützung,
lg
Herbert