Ich habe ein Add-In für einen Kunden erstellt. Per Knopfdruck sollen Daten (eine Liste der Debitoren) in eine bestehende Datei importiert werden.
Ich entscheide mich für VBA, weil ich so die Datei und die Daten prüfen kann.
Klappt:
Ich erhalte die Rückmeldung:
„Wir haben nun das File beim ersten Kunden getestet und dabei ist uns aufgefallen, dass aus den Debitor Stammdaten leider nur Einträge mit Kürzel exportiert werden und jene ohne nicht.“
Ich wundere mich. Ich importiere doch alle Daten:
xlBlattDebitoren.Range("A1").CurrentRegion.Copy Destination:=ThisWorkbook.Worksheets("Debitoren").Range("A1") ' -- kopiere die Daten
Ich ahne wo das Problem ist.
Wenn die ursprüngliche Liste gefiltert war, werden nur die sichtbaren Daten kopiert.
Also muss ich vorher prüfen, ob ein Filter eingeschaltet war. Falls ja, wird er entfernt:
' -- schalte mögliche gesetzten Filter aus
If xlBlattDebitoren.FilterMode = True Then
xlBlattDebitoren.Range("A1").AutoFilter
End If
Ich öffne mein Excel, das auf dem Desktop installiert und darin eine Datei. Ich kopiere einen Teil einer Tabelle nach Excel online, das auf dem SharePoint gespeichert ist.
Allerdings: ich darf nicht über das Kontextmenü einfügen, sondern muss die Tastenkombination(en) verwenden.
Verblüffend! Kennen Sie das? Ich habe ein Tabellenblatt mit einer intelligenten Tabelle. In der Arbeitsmappe wird ein Name oder mehrere Namen definiert, die Bezug auf diese intelligente (dynamische, formatierte, strukturierte) Tabelle nehmen:
Auf einem zweiten Tabellenblatt wird mit einer Formel (oder einer Datenüberprüfung) Bezug auf die Tabelle genommen:
Wird nun dieses Tabellenblatt dupliziert, werden auch die Namen dupliziert – sie liegen nun als Arbeitsmappennamen und Tabellenblattnamen vor:
Dupliziert man nun ein weiteres Mal das Duplikat, erhält man die Frage, „wohin mit den Namen“:
Der Name ist bereits vorhanden. Klicken Sie auf „Ja“, um diese Version des Namens zu verwenden, oder klicken Sie auf „Nein“, um die Version, die Sie verschieben oder kopieren möchten, umzubenennen.
Ich möchte den Namen nicht verschieben oder kopieren!
Und dann? Ist der Name drei Mal vorhanden … einmal als Arbeitsmappenname und zwei Mal als Tabellenblattname.
Ist euch das schon aufgefallen? Wenn auf mehreren Tabellenblättern (intelligente, dynamische, strukturierte, formatierte) Tabellen liegen, kann man nicht mehrere Tabellenblätter gleichzeitig kopieren.
ich wollte gerade Inhalte zwischen zwei Dokumenten kopieren mittels Kopieren / Einfügen von Zellinhalten.
Dies funktioniert jedoch leider nicht. Ich nutze die aktuelle Datei.
Ist dies unterbunden?
Hallo Herr H.,
geht doch!? Ich weiß gar nicht was Sie wollen?
Schauen Sie selbst …
*lach*
Und hier die Auflösung:
Erinnern Sie sich an die „unschöne“ Formel, die in der
Bearbeitungsleiste angezeigt wird? Ich habe die Bearbeitungsleiste
ausgeschaltet.
Wenn man nun in eine andere Mappe wechselt wäre es doof, wenn DORT auch die Bearbeitungsleiste ausgeblendet ist. Also schalte ich beim Wechseln in eine andere Datei diese Leiste zur Sicherheit ein:
Private Sub Workbook_Activate() Application.DisplayFormulaBar = False ' -- Bearbeitungleiste End Sub
Private Sub Workbook_Deactivate() Application.DisplayFormulaBar = True ' -- Bearbeitungleiste End Sub
Sie wissen, dass man in Excel nach dem Kopieren sofort
einfügen muss. Wenn man etwas anderes dazwischen macht, löscht Excel den
Zwischenspeicher.
Eben – und HIER machen wir etwas anderes dazwischen. Ich sollte die Datei ändern … Mache ich gleich.
Wenn einen Computer mit Windows 10 und Office 365 *pardon* Microsoft 365 hat, hat keine Langeweile. Jeden Tag etwas Neues. Ich sehe ein neues Symbol in meiner Taskleiste:
Wenn ich mit der Maus darüberfahre
wird mit erklärt, dass Microsoft Edge nun so aussieht. Aha. Lustig – mal ein neues Logo. Warum nicht jeden Tag ein neues? Dann ist die Welt nicht mehr so langweilig …
Und so schreibt mir Dominic:
Hallo Rene,
mir ist heute ein merkwürdiges Verhalten bei der
Datenüberprüfung / Dropdown aufgefallen, hier hat sich scheinbar etwas in Excel
verändert.
Ich habe eine Datei mit mehreren Tabellenblättern. In einer Spalte davon sind über Datenüberprüfung à Wert aus Liste als Dropdown nur Werte aus einer Liste zugelassen. Diese Liste steht auf einem gesonderten Tabellenblatt.
Jetzt möchte ich aus jedem der Tabellenblätter eine neue Datei machen. Das Tabellenblatt „Dropdown“ soll dabei stets mitkopiert werden. Ich wähle also mit gedrückter Strg-Taste die Tabellenblätter „Region1“ und „Dropdown“ -> Rechtsklick -> Verschieben oder kopieren -> Häkchen bei „Kopie erstellen“ und (neue Arbeitsmappe).
Mein Problem: Jetzt ist die Datengültigkeit in der Spalte
„Länderkürzel“ weg. Das war doch vor kurzem noch anders. Ich habe das für einen
Kunden ursprünglich per Makro gemacht, also das Erstellen der neuen Dateien und
dabei ist die Datengültigkeit stets erhalten geblieben. Plötzlich war sie immer
weg.
Hast du das schon mal gesehen? Und hast du vielleicht irgendwo eine ältere Excel-Version, mit der sich nachprüfen lässt, ob das vor kurzem wirklich anders war? Habe Version 2004
Stimmt, Dominic,
ich habe mich vor Kurzem noch mit dem Problem rumgeschlagen,
wenn ich nur das Blatt „Region1“ per VBA in eine neue Datei kopiere, verweist
die Datenüberprüfung auf das Blatt der alten Datei.
Das Perfide: es wird nicht angezeigt.
Wenn ich die neue Datei speichere, schließe und wieder
öffne, dann kommt die Meldung „Verknüpfung zu anderer Datei“. Und wenn ich die
Datenüberprüfung ändere, wird in „Information“ mir immer angezeigt, dass eine
Verknüpfung da ist. Man musste erneut speichern, schließen und öffnen, damit
dieser Hinweis weg war.
Ich habe darüber geschrieben (Dez. 2019):
Und: ich habe hier einen Laptop 2001 – DAMIT ging es – bei meiner aktuellen 2004er und 2005er-Maschine passiert das Gleiche wie bei dir.
Lustig?!? danke an Dominic Dauphin für den Hinweis.
Boah – ist das mies! Zwei Stunden lang habe ich gesucht. Und dann gefunden.
Ich habe eine Datei mit zwei Tabellenblättern. Eines enthält eine Datenliste, ein zweites eine Datenüberprüfung mit einer Liste, die diese Daten aus dem anderen Blatt holt:
Per VBA ziehe ich nun diese beiden Blätter (einzeln!) in eine Masterdatei (man kann es auch per Hand machen. Die Verknüpfung verweist nun auf die alte Datei:
Der Code:
Dim xlFremdeDatei As Workbook
Dim xlEigeneDatei As Workbook
Dim xlFremdesBlattDaten As Worksheet
Dim xlFremdesBlattDatenüberprüfung As Worksheet
Set xlEigeneDatei = ThisWorkbook
Set xlFremdeDatei = Application.Workbooks.Open("D:\Eigene Dateien\Excel\Beispieltabellen\3Musketiere.xlsx")
xlFremdeDatei.Worksheets(2).Copy Before:=xlEigeneDatei.Worksheets(1)
Set xlFremdesBlattDatenüberprüfung = xlEigeneDatei.Worksheets(1)
xlFremdeDatei.Worksheets(1).Copy Before:=xlEigeneDatei.Worksheets(1)
Set xlFremdesBlattDaten = xlEigeneDatei.Worksheets(1)
xlFremdeDatei.Close SaveChanges:=False
xlEigeneDatei.Save
Beide Dateien werden geschlossen, die Masterdatei wird geöffnet. Unter Datei / Informationen wird angezeigt, dass sich in dieser Datei eine Verknüpfung (auf eine andere Datei) befindet, die man hier nicht löschen kann. Klar!
Nun setze ich in der Zelle mit der Datenüberprüfung per Hand oder per VBA die Verknüpfung auf die eigene Datei:
Excel zeigt noch immer (unter Datei / Informationen) an, dass sich in der Datei eine Verknüpfung befindet. Diesen Eintrag kann ich nicht löschen! Erst durch das Schließen und wieder Öffnen der Datei ist er verschwunden.
Das Erstaunliche: werden die Tabellenblätter gelöscht, wird die Verknüpfung nicht angezeigt. Werden die Verknüpfungen „nur“ behoben, bleibt der Eintrag noch in den Informationen stehen.
Zwei Stunden habe ich benötigt, um das herauszufinden. Mies!
Ich erstelle zwei Listen mit Schulnoten einer Klassenarbeit von verschiedenen Schülern. Ich berechne Maximum und Minimum der ersten Klassenarbeit – allerdings in nicht nebeneinanderliegenden Zellen.
Ich kopiere die beiden Zellen, in denen die Funktionen stehen.
Und füge sie in einer Zelle ein, wo sie die Ergebnisse für die zweite Klassenarbeit liefern sollen.
Erstaunlicherweise fügt Excel die Werte ein.
Und ja – ich weiß – über das Smarttag des Kontextmenüs kann man auf Formeln umschalten …
Ich habe für eine Firma ein kleines Add-In geschrieben: Daten werden von A nach B übertragen und andere Daten zurück von B nach A. Um die korrekten Daten zu ermitteln verwende ich die Formeln – man kann es mit SVERWEIS machen – ich habe mich für die flexiblere Variante INDEX und VERGLEIC entschieden. Diese Formel wird in den Bereich eingefügt, der Bereich wird kopiert und als Werte wieder eingefügt:
On Error Resume Next
[...]
xlBereich.Copy
xlBereich.PasteSpecial Paste:=xlPasteValues
Das Programm läuft. Nach einigen Tagen erhalte ich einen Anruf:ein Fehler ist aufgetreten. Ich schaue es mir an. Sie Anwenderinnen haben auf den Bereich einen Filter gesetzt und gefiltert! Klaro – nun kann mein Makro nicht mehr die Inhalte als Werte einfügen:
Also überprüfe ich, ob ein Filter eingeschaltet ist. Wenn ja – dann wird er ausgeschaltet. Und schon kann das Programm wieder sauber die Daten übertragen …
Ich wollte aus einem gefilterten Bereich nur die
Filterergebnisse ausschneiden und woanders hinkopieren, sagen wir in ein
anderes Tabellenblatt.
Beim Kopieren klappt das problemlos, hier werden nur die
Filterergebnisse kopiert und sonst nichts. Versuche ich jedoch, diese
auszuschneiden, so beschränkt sich das Ausschneiden nicht nur auf die
gefilterten Zeilen, sondern es werden alle ausgeschnitten, egal ob ich die
komplette Zeile ausschneide oder nur einen Bereich. Beim Einfügen in das andere
Tabellenblatt sind die weggefilterten Zeilen dann ausgeblendet.
Kennen Sie für dieses Problem irgendeine saubere Lösung
außerhalb von VBA?
Gehe zu à nur
sichtbare Zellen funktioniert natürlich auch nicht und wird mit dieser schönen
Fehlermeldung „Dies kann nicht mit einer Mehrfachauswahl ausgeführt werden“
quittiert. Sortieren statt Filtern wäre eine Möglichkeit, aber nicht wenn der
Autofilter im Sinne von Textfilter à
Enthält verwendet wird, also das im Autofilter Gesuchte nicht am Anfang steht.
Vermutlich geht es einfach nicht, zumal Excel sich ja auch
ohne Autofilter weigert, nicht zusammenhängende Bereiche auszuschneiden.
Trotzdem würde mich Ihre Meinung interessieren.
Vielen Dank und viele Grüße
Hallo Herr D.,
mir ist auch aufgefallen, dass sich Excel beim Einfügen und
Inhalte Einfügen unterschiedlich verhält. Auch beim Kopieren und Ausschneiden.
Und: Sie haben recht: ausschneiden verlangt wohl – anders
als kopieren – immer einen zusammenhängenden Bereich. Deshalb ist es wohl nicht
möglich, eine gefilterte Liste auszuschneiden und einzufügen.
Ich habe ein bisschen probiert … mir ist auch nichts Kluges
eingefallen. Das „Intelligenteste“ ist: Kopieren – Einfügen – zurückwechseln –
löschen. Nicht lachen – ich weiß – das ist nicht clever und verdient kein
Fleißsternchen.
In einer Zelle steht ein langer (?!) Text, von den Textteile mit unterschiedlichen Zeichenformaten formatiert sind. Ein Anwender möchte nun einen Textteil kopieren, aber so, das die Zeichenformatierungen erhalten bleiben:
Dadurch, dass ein Textteil markiert wird, wird jedoch nur der Text markiert. Und somit werden beim Kopieren die Formate nicht mitgenommen.
Ich habe ihm den umgekehrten Weg geraten: Er solle die Zelle kopieren und die Teile, die er nicht benötigt, löschen.
Übrigens: Dabei ist mir aufgefallen, dass innerhalb des Textes zwar die Tastenkombinationen [Strg] + [Pos1], [Strg] + [Ende], [Strg] + [→] und [Strg] + [←] funktionieren (springen zum Textanfang, Textende und über die Wörter, jedoch nicht: [Strg] + [↑] oder [Strg] + [↓]. Schade – so hätte man leichter markieren und löschen können (mit gedrückter Umschalttaste).
Heute in der Excelschulung wies mich eine Teilnehmerin auf folgendes Phänomen hin:
In einer Exceltabelle werden Spalten ausgeblendet.
Man kopiert die Tabelle als Text (ohne Formatierungen) nach Outlook. Dort werde einige Inhalte der ausgeblendeten Spalten dennoch angezeigt:
Der Grund ist schnell gefunden: Wird eine Spalte ausgeblendet oder mit der Spaltenbreite 0 versehen, werden die Inhalte nicht kopiert. Wurde die Spalte jedoch zusammengeschoben und weist eine kleine Spaltenbreite auf, dann ist sie nicht „ausgeblendet“. Also werden die Inhalte mitgenommen:
Natürlich kenne ich das Phänomen. Aber es verblüfft immer wieder.
Gegeben sei ein Liste mit einer Zahlenkolonne, in der sich ein Textformat druntergeschoben hat.
Um diesen Text zu entfernen (Smarttags sind leider nicht in Sicht), schreibe ich die Zahl 1 in eine Zelle, kopieren sie und füge sie über den Bereich mit „Inhalte einfügen / multiplizieren“ ein:
Ich weiß – es gibt noch andere Möglichkeiten – ich habe sie im Beitrag „SAP & co“ aufgelistet. Auf alle Fälle – ich bin glücklich:
Jedoch – aus irgend einem Grund (Macht der Gewohnheit?) drücke ich die Enter-Taste (zur Bestätigung?)
Klar – die noch im Zwischenspeicher befindliche Zahl wird in den markierten Bereich eingefügt … DAS wollte ich eigentlich nicht.
In einer Arbeitsmappe befindet sich ein Tabellenblatt – nennen wir es „Jena“. In dieser Mappe befindet sich ein zweites Tabellenblatt, das Bezug auf das erste Blatt nimmt. Die Formeln können dann beispielsweise so aussehen:
=Jena!H4
In einer zweiten Arbeitsmappe gibt es auch ein Tabellenblatt „Jena“. Wird nun das zweite Blatt aus der ersten Daten in die zweite kopiert oder werden die Zellen in die zweite Datei kopiert, so wird der Bezug auf die erste Datei „mitgenommen“ und nicht auf die zweite Datei:
Wir haben eine Liste, auf die wir einen Filter anwenden:
Schreibt man in eine andere Zelle einen Wert, kopiert ihn und fügt ihn über die gefilterten Daten ein, funktioniert dies:
Kopiert man jedoch einen Wert und fügt ihn mit Inhalte einfügen / Werte ein, so werde die dazwischenliegenden Werte überschrieben:
Die Lösung: man muss nach dem Filtern die nur sichtbaren Zellen auswählen (Start / Bearbeiten / Suchen und Auswählen / Inhalte auswählen). Die Tastenkombination [Alt] + [Shift] + [,] (also: [Alt] + [Shift] + [;]) tut das Gleiche.
Manche Übersetzungen sind wirklich sehr merkwürdig.
In der letzten Excel-Schulung fragte eine Teilnehmerin, was folgende Erklärung bedeutet:
Text: „ist die Zeichenfolge mit den Zeichen, die Sie kopieren wollen“
Noch erstaulicher ist die Beschreibung für die Funktion T:
T „wandelt die Argumente in Text um.“ T benötigt einen Wert, „den Sie überprüfen wollen. Wenn der Wert kein Text ist, werden zwei Anführungsstriche (leerer Text) zurück gegeben.“
Für die Teilnahmebestätigungen der Excel-Schulung morgen markiere ich in Outlook in der Mail die Namen und kopiere sie nach Excel. Und wundere mich, warum sie in der Spalte neben der Spalte stehen, in die ich sie eingefügt habe:
Klar: Excel übernimmt den Einzug der Absatzformatierung von Outlook. Kann man leicht im Dialog „Zellen formatieren“ nachsehen:
Es könnte alles so schön sein. Aber nein – ist es nicht. Doch von vorne.
Ich habe eine Liste. In dieser Liste befinden sich in Spalte B Bundesländer, in Spalte C einige Städte. Dummerweise befinden sich Lücken dazwischen: Also: für Baden-Württemberg sind vier Zeilen reserviert, für Bayern drei und so weiter:
Ich hätte gerne die Spalte B durchgehend gefüllt, also Ba-Wü, Ba-Wü, Ba-Wü, Ba-Wü, BY, BY, BY und so weiter.
Eigentlich kein Problem. Man markiert die Spalte B und wählt den Befehl Start (Gruppe Bearbeiten) Suchen und Auswählen / Inhalte auswählen und dort die Option „Leerzellen“:
Freundlicherweise markiert Excel nur die Leerzellen innerhalb des benötigten Bereichs:
In diese wird die Formel
=B2
eingetragen. Da die Formel auf alle Zellen angewendet werden muss, wird sie mit [Strg] + [Enter] beendet:
Nun stehen in allen Zellen die Werte, die sich darüber befinden. So weit so gut. Also nur noch kopieren und Inhalte als Werte einfügen.
Erster Schritt: die markierten Zellen kopieren und beispielsweise über das Kontextmenü Inhalte einfügen / Werte:
Padautz! „Diese Aktion funktioniert nicht bei einer Mehrfachauswahl!“
Nöööö! „Sie können dies hier nicht einfügen, da der Kopieren-Bereich und der Einfügebereich nicht die gleiche Größe haben“:
Excel und ich – wir sprechen einfach nicht die gleiche Sprache. Warum tut er nicht, was ich will. Drei Anläufe – beim dritten klappt es: Markierung auflösen, erneut die gesamte Spalte B markieren, kopieren – und nun endlich darf ich die Inhalte als Werte einfügen.
Ein Teilnehmer kopiert eine Liste und fügt sie nicht AUF einer Zelle, sondern IN einer Zelle ein. Das Ergebnis sieht wie folgt aus:
Eine Teilnehmerin schreibt „Montag “ (an Ende ein Leerzeichen) in eine Zelle, zieht es nach rechts und wundert sich, warm Calc die Wochentage nicht weiterzählt.
Und nun mein Lob an Excel: DIESE beiden Fehler tauchen in der Tabellenkalkulation Excel nicht auf!
Ich bin wirklich verblüfft. Wusste nicht, dass es geht:
Man erstellt eine Datenüberprüfung für mehrere Zellen (beispielsweise Zahlen, Datumswerte oder Listen).
Datenüberprüfung (Gültigkeit)
Diese (und einige anderen Zellen) werden über Zellen formatieren / Schutz „nicht gesperrt“. Das Blatt wird mit einem Blattschutz versehen. Nun ist es für den Anwender möglich, in die freien Zellen etwas einzutragen und diesen Inhalt in die Zellen mit Datenüberprüfung hineinzukopieren.
Das heißt: Das Einfügen von Inhalten unterläuft die Datenüberprüfung. Perfide!
Ich habe ja schon viel gesehen – aber DIESE Fehlermeldung kenne ich nicht. Was heißt DAS?
was soll ich?
Die Antwort: Sie haben alle Zellen eins Tabellenblattes kopiert (links oben in die Ecke zwischen A und 1 geklickt). Diese 1.048.576 Zeilen und 16.384 Spalten versucht auf ein zweites Arbeitsblatt einzufügen. Allerdings haben Sie dort nicht die Zelle A1 ausgewählt, sondern eine andere, beispielsweise A2. Nun hat Excel „nur“ noch 1.048.575 Zeilen zur Verfügung – in diese kann es jedoch die 1.048.576 Zeilen nicht einfügen. Daher diese Meldung.
Ich liebe die Taste [F4]. Mit ihrer Hilfe kann man die letzte Aktion wiederholen. Tolle Sache. Auch [Strg]+[Y] macht das Gleiche. Aber bei [F4] muss ich nur eine Taste drücken. Allerdings: Wenn ich einen Text kopiere und einfüge, dann kann ich ihn mit Wiederholen (F4) nur noch EIN Mal wieder einfügen. Danach funktioniert der Befehl nicht! Übrigens auch nicht [Strg] + [Y].
Wiederholen funktioniert beim Kopieren-Einfügen nur ein Mal.
Das ist richtig – keine Ahnung warum! Also doch mit zwei Fingern: [Strg] + [V].
Beim Kopieren eines Tabellenblattes in eine andere Datei erhalte ich eine merkwürdige Fehlermeldung:
„Die Blätter können von Excel nicht in die Zielarbeitsmappe eingefügt werden, da sie eine geringere Anzahl von Zeilen und Spalten enthält als die Quellarbeitsmappe.“
Kopieren verboten!
Die Antwort ist einfach: Sie versuchen ein Tabellenblatt auf einer Excel-2013-xlsx-Tabelle in eine Excel-2003-xls zu kopieren. Das kann nicht gehen, weil Excel 2013 mehr als 1.000.000 Zeilen hat, Excel 2003 nur etwas mehr als 65.000. Der zweite Satz des Meldungsfensters beschreibt die Lösung:
„Zum Verschieben oder Kopieren der Daten in die Zielarbeitsmappe können Sie die Daten auswählen und dann mithilfe der Befehle ‚Kopieren‘ und ‚Einfügen‘ in die Blätter eine anderen Arbeitsmappe einfügen.“
Wenn Sie ein Diagramm von Excel nach PowerPoint kopieren, wird nicht nur das Diagramm mit seinen Daten nach PowerPoint kopiert, sondern die gesamte Datei. Man kann Einblick in ALLE Daten nehmen, indem man in PowerPoint auf „Daten bearbeiten“ klickt.
Es kann Vorteile haben – es kann aber auch sehr gefährlich sein.
Beim Datenaustausch werden einige Werte „zerschossen“.
Problem: Da Excel einige Zeichen nach Gutdünken interpretiert, kann ein Punkt oder ein Gedankenstrich in ein Datum verwandelt werden, ein E in eine Zahl der wissenschaftliche Schreibweise …
Wenn Sie das Problem häufig haben (beispielsweise beim Kopieren von Word-Tabellen nach Excel), sollten Sie die Tabellen in tabulatorgetrennte Texte verwandeln, die Datei als Text speichern und beim Importieren darauf achten, dass die Spalten als Text importiert werden (das heißt: dass das Textformat unterlegt wird). Dann klappt es:
Datenaustausch: Texte werden „zerschossen“
Schritt 1: Tabellen in tabulatorgetrennte Texte konvertieren.
Schritt 2: Beim Öffnen Tabstopp als Trennzeichen festlegen und die entsprechende Spalten als Text formatieren.