Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1072to1076
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zwischenspeicher behalten oder löschen

Zwischenspeicher behalten oder löschen
04.05.2009 21:06:38
Mindjogger
Servus,
hier komme ich nicht weiter:
1) ich kopiere mir die aktiven (gefüllten) Zellen in den Zwishcenspeicher
2) um diese in einer anderen Datei in einem neune Blatt einzufügen.
3) das Sheet bzw. die Datei von dem ich kopiere schließe ich wieder.
4) es erscheint die Rückfrage (Umfangreiche Datane im Zwischenspeicher -behalten Ja/Nein)
5) ich will die Daten behalten
6) ich will diese Abfrage nicht
So mache ich es:
ActiveCell.SpecialCells(xlLastCell).Select ' Geht zur letzten Zelle
Range(Selection, Cells(1)).Select ' Markiert alles bis zur ersten Zelle A:1
Selection.Copy ' Kopiert den markierten Bereich
ActiveWorkbook.Close ' Hier erscheint die Abfrage :-(
' nach dem Close bin ich wieder in meinem Aufrufendem Sheet
Sheets.Add After:=Sheets(Sheets.Count) ' Fügt am Ende ein neues Blatt ein
ActiveSheet.Paste ' Fügt den Inhalt aus dem Zwischenspeicher ein
Wie kann ich das umsetzen ohne jedesmal die Abfrage zu erhalten?
Danke für eure Hilfe.
Bernhard

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwischenspeicher behalten oder löschen
04.05.2009 21:11:10
Hajo_Zi
Hallo Bernhard,
Excel ist ein vielseitiges Programm und man kann viele Probleme damit lösen. Jede positive Seite hat aber auch negative Aspekte - einer davon ist im Makrorecorder enthalten.
Die Bücher, die es zu Excel VBA gibt, erklären viele Funktionen, aber ich habe bisher nur in einem gelesen, dass der vom Makrorecorder aufgezeichnete Code bereinigt werden sollte.
Der Makrorecorder zeichnet alle Aktionen auf, u. a. auch das Auswählen einer Zelle oder eines eingebetteten Objektes (Bild, Diagramm, Zeichnungsobjekt usw.) dabei wird generell Select und Activate aufgezeichnet. Diese Befehle sind in VBA zu 99,9% nicht notwendig. Sie lassen den Bildschirm flackern und senken die Geschwindigkeit bei der Ausführung des Codes. Man sollte also schon von Beginn an bei der Programmierung darauf achten, solche Befehle zu vermeiden. Meine Erfahrung mit dem Vorsatz: Das mache ich später ist, man schreibt das Programm später meist komplett neu. Also kostest es nicht nur Rechnerzeit sondern auch Deine Zeit und ist Dir Deine Zeit so wenig Wert?
Zum Vergleich mit und ohne Select schau Dir auch mal diese Beispielarbeitsmappe an: mit und ohne select Auf meiner Homepage sind alle meine Beispiele ohne Select. Da kann man sich also einige Lösungsansätze zu diesem Thema ansehen.
Application.CutCopyMode =false

Anzeige
Hat leider nicht geholfen
04.05.2009 21:51:20
Mindjogger
Sorry,
ich habe mir einmal deine Beispiele angesehen, Die Performanceunterschiede sind erheblich. Respekt.
Allerdings hat es mir nicht weitergeholfen.
Ich habe
Application.ScreenUpdating = True
Application.CutCopyMode = False
gesetzt - Keine Besserung
Und ohne Select geht es nicht. Wie kann ich denn alles Zellen so kopieren, daß ich diese in das andere File übertragen kann?
Danke für deine Hilfe.
Bernhard
AW: Erst Einfügen, dann Mappe schließen
04.05.2009 22:33:39
Daniel
Hi
prinzipiell unterdrückt man solche Excelmeldungen mit: APPLICATION.DISPLAYALERTS = FALSE
(für weitere Infos bitte in der Hilfe nachlesen), allerdings entscheidet dann Excel, welche der normalerweise angebotenen Möglichkeiten zu anwendung kommt.
in deinem Fall lässt sich die Abfrage aber viel einfacher vermeiden, in dem du die Datei erst dann schließt, wenn du die Daten eingefügt hast.
das könnte so funktionieren:

ThisWorkbook.Sheets.Add after:=ThisWorkbook.Sheets.Count(ThisWorkbook.Sheets.Count)
ActiveSheet.Usedrange.copy Destination:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Cells(1, _
1)
ActiveWorkbook.Close


oder, wenn man lieber mit Variablen arbeitet:


Dim shZiel as Worksheet
Dim shQuelle as Worksheet
Set shQuelle = ActiveSheet
Set shZiel = ThisWorkbook.Sheets.Add After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
shquelle.UsedRange.copy Destination:=shZiel.Cells(1,1)
shZiel.Parent.Close


Anzeige
offen lassen ..
05.05.2009 08:57:01
Mike
Hey Bernhard,
hab ich das richtig verstanden, Du kopierst Daten, schliesst den Ursprung
und fügst erst dann die kopierten Daten ein? Lass doch den Ursprung
offen, bis der Kopiervorgang beendet ist.
Gruss
Mike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige