Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1624to1628
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

Code läuft mit Tastenkombination nicht

Code läuft mit Tastenkombination nicht
29.05.2018 09:03:38
Matthias
Guten Morgen
Ich habe für meine Tätigkeit in meinem Beruf eine Automatisierung in VBA programmiert. Da ich noch ein Grünhorn in VBA bin, bin ich eigentlich ganz zufrieden mit dem Code. Wahrscheinlich wird ein VBA-Profi diesen Code "besser" schreiben.
Wenn ich den Code im VBA-Editor ausführe geht alles ganz toll :-). Wenn ich beim Debuggen den Code Schrittweise ausführe ist alles Super :-). Wenn ich den Code als Tastenkombination ausführe bleib ich nach dem öffnen der Datei stehen?
Sub Register_kopieren()
' Register_kopieren Makro
' Die Register (Materialliste, Aufwand und Installation) aus der Basisdatei (2019_KALK- _
Materialliste.xlsm) sollen in die Kalk kopiert werden.
' Tastenkombination: Strg+Umschalt+K
Dim WB_Name As String
WB_Name = ActiveWorkbook.Name
Workbooks.Open Filename:= _
"\\Sch06\daten\UNITA\STEUERUNG\System Engineering\10_KALK_Bearbeitung\Review_Kalk\ _
KALK_V2019\Materialliste\2019_KALK-Materialliste.xlsm"
Sheets("Materialliste").Select
Cells.Select
Selection.Copy
Windows(WB_Name).Activate
Sheets("Materialliste").Visible = True
Sheets("Materialliste").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("Materialliste").Visible = False
Windows("2019_KALK-Materialliste.xlsm").Activate
Sheets("Aufwand").Select
Cells.Select
Selection.Copy
Windows(WB_Name).Activate
Sheets("Aufwand").Visible = True
Sheets("Aufwand").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("Aufwand").Visible = False
Windows("2019_KALK-Materialliste.xlsm").Activate
Sheets("Installation").Select
Cells.Select
Selection.Copy
Windows(WB_Name).Activate
Sheets("Installation").Visible = True
Sheets("Installation").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("Installation").Visible = False
Application.CutCopyMode = False
Windows("2019_KALK-Materialliste.xlsm").Close
Windows(WB_Name).Activate
Sheets("Projekt Eingaben").Select
End Sub

Würde mich über eine Antwort sehr freuen :-) :-) :-)

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code läuft mit Tastenkombination nicht
29.05.2018 09:58:06
Daniel
Hi
Der Recorder ist nur eingeschränkt tauglich, um funktionierenden Makrocode zu erstellen.
aufgezeichneter Code muss stark überarbeitet werden:
- Man spricht die Mappen besser über Workbook an und nicht über Windows.
- Wenn du aufzeichnest, verwende zum Einfügen von Excelspezifischen Inhalten (kopierte Zellbereiche) das Kontextmenü "Inhalte einfügen" und nicht die Tasten INSERT oder STRG+V
- du kannst deinen Code deutlich kürzen, wenn du nicht alles erst selektierst sondern vor jedem Zellbereich (dh Range, Cells, Columns, Rows) immer das Workbook und das Worksheet mit dazu angibst.
dann wir der Code deutlich kürzer, und du kannst auch ausgeblendete Tabellenblätter bearbeiten.
dh diesen Block:
    Windows("2019_KALK-Materialliste.xlsm").Activate
Sheets("Aufwand").Select
Cells.Select
Selection.Copy
Windows(WB_Name).Activate
Sheets("Aufwand").Visible = True
Sheets("Aufwand").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("Aufwand").Visible = False

kannst du so zusammenfassen:
Workbooks("2019_KALK-Materialliste.xlsm").Sheets("Aufwand").Cells.Copy
Workbooks(WB_Name).Sheets("Aufwand").Range("A1").PasteSpecial xlPasteAll
für die anderen Blöcke dann analog.
dazu weitere Infos auch hier: http://www.online-excel.de/excel/singsel_vba.php?f=78
wenn das Workbook, in welches du die Werte einfügst, dasjenige ist welches den Code enthält, dann kannst du es immer mit "ThisWorkbook" ansprechen und musst dir den Namen nicht in einer Variable merken.
dh statt Windows(Wb_Name) oder Workbooks(WB_Name) einfach ThisWorkbook
Gruß Daniel
Anzeige
AW: Code läuft mit Tastenkombination nicht
29.05.2018 11:07:19
Daniel
da sich Tabellenblattnamen in beiden Mappen gleich sind, lässt sich das ganze noch über eine Schleife verkürzen.
zum Kopieren und einfügen kann man auch Quelle.Copy Destination:=Ziel verwenden.
damit reduziert sich der Code dann auf:
Sub Register_kopieren()
Dim wbZiel As Workbook
Dim wbQuelle As Workbook
Dim sh
Set wbZiel = ActiveWorkbook
Set wbQuelle = Workbooks.Open(Filename:="\\Sch06\...\2019_KALK-Materialliste.xlsm", ReadOnly:= _
True)
For Each sh In Array("Materialliste", "Aufwand", "Installation")
wbQuelle.Sheets(sh).Cells.Copy Destinatioin:=wbZiel.Sheets(sh).Cells(1, 1)
Next
wbQuelle.Close
End Sub
Gruß Daniel
Anzeige
AW: Code läuft mit Tastenkombination nicht
29.05.2018 12:12:20
Matthias
Hey Daniel
Vielen Dank für Deine Unterstützung :-)
Die erste Verbesserung die Du mir gesendet hast hat fast super funktioniert und ist mir auch verständlich. Fast deswegen das sich der Code in Einzelschritten ausführen lässt und auch im Editor als ganzes ... und das ganze ohne Fensterswitchen macht die Sache viel angenehmer :-). Jedoch wieder die Tastenkombination funktioniert nicht. In der File Materialliste ist noch Change-Code hinterlegt. Könnte dies ein Fehler erzeugen?
Der zweite Code den Du gesendet hast ist mir schon ein bisschen zu hoch. Ist sh eine VBA-Funktion?
Wenn ich den Code 1:1 (mit korrekter Pfad Angabe eingebe) bekomme ich einen Codefehler in folgender Zeile:
wbQuelle.Sheets(sh).Cells.Copy Destinatioin:=wbZiel.Sheets(sh).Cells(1, 1)
Gruss
Matthias
Anzeige
AW: Code läuft mit Tastenkombination nicht
29.05.2018 13:22:40
Daniel
Hi
schwer zu sagen.
Wenn der Code im Edtior läuft, ist er eigentlich korrekt.
Ohne mir die Datei anzuschauen, kann ich dir auch nicht sagen, warum es über die Tastenkombination nicht geht. Hast du die Tastenkomination auch richtig zugewiesen?
ob der Change-Code die Ursache ist, kann ich dir auch nicht sagen ohne den Code zu kennen.
Aber wenn der Code im Editor auch als gesamtes Durchläuft, sollte das nicht die Ursache ein.
Ansonsten kannst du mit Application.EnableEvents = False diese Eventmakros ausschalten, dh nach diesem Befehl werden sie nicht mehr ausgeführt.
Du darfst nicht vergessen, die Events mit Application.EnableEvents = True wieder einzuschalten, sonst bleiben sie nach Makroende aus und deine Datei funktioniert nicht wie gewünscht.
Aufpassen muss man nach einem Fehlerabbruch. wenn davor die Events ausgeschaltet wurden muss man den Befehl Application.enableEvents = True im Direktfenster eingeben (das Direktfenster kannst du, wenn es nicht vorhanden ist, im Menü "Ansicht" einblenden)
was den zweiten Code angeht, dass muss natürlich Destination:= in der Zeile mit dem Fehler heißten.
die Variable sh ist eine einfache Variable, die hier als Schleifenzählter der For Each In-Schleife verwendet wird.
Die Schleife läuft über die Inhalte des Arrays und die Variable sh nimmt jeden Wert des Arrays einmal an (beim ersten Durchlauf sh="Materiallise", beim zweiten sh="Aufwand", beim dritten sh="Installation")
Den zweiten Code kannst du nur anwenden, wenn die Tabellenblätter in beiden Dateien gleich benannt sind.
Gruß Daniel
Anzeige
AW: Code läuft mit Tastenkombination nicht
29.05.2018 14:08:06
Matthias
Hey Daniel
Vielen Dank für Deine Erklärung. Der Fehler mit der Destination hätte mir auch auffallen können. Der Code läuft und ich finde ihn klasse. Auch in diesem Code geht die Tastenkombination nicht, aber ich denke das es vorher schon klar war das es nicht an diesem Code liegt und der Fehler irgendwo anders begraben ist. Momentan werde ich noch mit dem Fehler, das die Tastenkombination nicht geht, leben können. In absehbarer Zeit sollte ich auf die Lösung kommen.
Es gibt noch vieles, was ich mit diesen Dateien automatisieren möchte und ich denke das ich hier noch hin und wieder eine Frage Posten werde. Würde mich freuen von Dir weiterhin Lösungen zu bekommen.
Diese ganze Sache hat mir mal wieder bewusst gemacht wie viel es hier zu lernen gibt und wo ich mich befinde ... Ich bin aber motiviert mich in der VBA weiterzubilden.
Vielen Dank und ein hochachtungsvolles Lob
Matthias
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige