Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Mehrere Befehle zusammenfassen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Mehrere Befehle zusammenfassen (540 mal gelesen)
Yavis
Mitglied


Sehen Sie sich das Profil von Yavis an!   Senden Sie eine Private Message an Yavis  Schreiben Sie einen Gästebucheintrag für Yavis

Beiträge: 9
Registriert: 22.01.2019

erstellt am: 06. Feb. 2019 14:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich würde gerne wissen ob und wie man mehrere gleiche Befehle in Excel VBA vereinfachen bzw. zusammenfassen kann.

Hier ein Beispiel:

Sheets("Aktuell").Range("B3:B7").Copy
Sheets("G3").Range("B5:B9").PasteSpecial xlPasteFormulas
Application.CutCopyMode = False

Sheets("Aktuell").Range("C3 7").Copy
Sheets("G3").Range("D5:E9").PasteSpecial xlPasteFormulas
Application.CutCopyMode = False

Sheets("Aktuell").Range("E3:E7").Copy
Sheets("G3").Range("F5:F9").PasteSpecial xlPasteFormulas
Application.CutCopyMode = False

Sheets("Aktuell").Range("F3:F7").Copy
Sheets("G3").Range("H5:H9").PasteSpecial xlPasteFormulas
Application.CutCopyMode = False

Ich kann das natürlich mit Copy/Paste beliebig lange fortsetzen, aber ich bin mir fast sicher, dass es dafür eine elegantere Lösung gibt 

Vielen Dank vorab schon einmal.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8017
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 06. Feb. 2019 15:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Yavis 10 Unities + Antwort hilfreich

Leseempfehlung:
>> Achtung Makrorekorder oder Wer selektiert denn da? <<

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 384
Registriert: 11.08.2007

erstellt am: 06. Feb. 2019 16:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Yavis 10 Unities + Antwort hilfreich

Hi,

es reicht, wenn die Zeile:

Code:

Application.CutCopyMode = False

einmalig am Ende des Codes steht. Außerdme kannst du mit With arbeiten und beim Einfügen reicht es aus, die Starzelle anzugeben:

Code:
    With Sheets("Aktuell")
        .Range("B3:B7").Copy
        Sheets("G3").Range("B5").PasteSpecial xlPasteFormulas
       
        '.....
   
    End With
    Application.CutCopyMode = False


Eine weitere Zusammenfassung ist nicht möglich.

------------------
Bis später,
Karin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Yavis
Mitglied


Sehen Sie sich das Profil von Yavis an!   Senden Sie eine Private Message an Yavis  Schreiben Sie einen Gästebucheintrag für Yavis

Beiträge: 9
Registriert: 22.01.2019

erstellt am: 06. Feb. 2019 17:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank für die Rückmeldung.

Ich habe jetzt es jetzt so umgeschrieben:

Sheets("Aktuell").Range("B3:B7").Copy Sheets("G3").Range("B5:B9")

da beim Einfügen in der anderen "G3"-Tabelle immer eine Spalte Abstand zwischen zwei einzufügenden Spalten ist und ich mir nicht sicher bin, ob das berücksichtigt werden kann.

Eine Frage hätte ich bitte noch: gibt es in Excel ein Problem zwischen automatischer Berechnung und Makros? Wenn ich die automatische Berechnung für die Tabelle aktiviere, bekomme ich am laufenden Band Fehlermeldungen, die ich vorher nicht bekommen habe und das Makro hält ständig an.

Viele Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 384
Registriert: 11.08.2007

erstellt am: 06. Feb. 2019 17:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Yavis 10 Unities + Antwort hilfreich

Wenn du einfach nur den .Copy-Befehl verwendest ist das aber etwas anderes als wenn du mit PasteSpecial arbeitest - so werden auch die Formate übertragen und nicht nur die Formeln...
Also ich kann nicht sehen, dass bei dieser Codezeile in eine Spalte im Abstand von 2 Spalten kopiert wird - es wird in dieselbe Spalte kopiert nur eben 2 Zeilen weiter nach unten. Es reicht in solchen Fällen aber immer, wenn du für das Ziel nur die Startzelle angibst, denn Excel weiß ja, dass 5 zusammenhängende Zellen kopiert werden sollen.

Was meinst du mit bekomme ich am laufenden Band Fehlermeldungen, die ich vorher nicht bekommen habe und das Makro hält ständig an.? Was für Fehlermeldungen (genauen Text) und in welcher Codezeile hält das Makro an?

------------------
Bis später,
Karin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Yavis
Mitglied


Sehen Sie sich das Profil von Yavis an!   Senden Sie eine Private Message an Yavis  Schreiben Sie einen Gästebucheintrag für Yavis

Beiträge: 9
Registriert: 22.01.2019

erstellt am: 07. Feb. 2019 17:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die Erklärung. Den PasteSpecial-Befehl werde ich mal ausprobieren. Im Moment läuft das Makro mit dem .Copy-Befehl zu meiner Zufriedenheit.

Ich habe festgestellt, dass willkürlich Fehlermeldungen aufgeploppt sind, wenn bei Excel die automatische Arbeitsmappenberechnung aktiviert ist. Wenn ich mit Application.Calculation = xlCalculationManual am Anfang und mit Application.Calculation = xlCalculationAutomatic am Ende des Markos arbeite, bekomme ich diese Fehlermeldungen nicht. Vielleicht hilft das zum Verständnis weiter (ich verstehs nämlich nicht, ich arbeite im Moment nur über Trial&Error).

Vielleicht kann mir an dieser Stelle noch jemand Hilfe geben:

ich möchte das Ergebnis dieses Codes:

Rows("1:32").Copy
Range("1:32").Insert Shift:=xlDown

mit diesem Befehl rückgängig machen:

Rows("1:32").Delete

Leider bekomme ich wieder willkürliche Fehlermeldungen: "Ausführung des Codes wurde unterbrochen"

Und diesmal hilft auch der .Calculation-Befehl nicht mehr. Jemand eine Idee?


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 384
Registriert: 11.08.2007

erstellt am: 07. Feb. 2019 18:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Yavis 10 Unities + Antwort hilfreich

Den PasteSpecial-Befehl hattest du doch bereits in deinem zuerst geposteten Code verwendet...

Dass willkürlich Fehlermeldungen erscheinen hattest du auch bereits geschrieben - aber meine Frage, WAS für Fehlermeldungen genau, hast du nicht beantwortet.

Bei mir kommen in der Befehlszeile Rows("1:32").Delete keine Fehlermeldungen.

------------------
Bis später,
Karin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Yavis
Mitglied


Sehen Sie sich das Profil von Yavis an!   Senden Sie eine Private Message an Yavis  Schreiben Sie einen Gästebucheintrag für Yavis

Beiträge: 9
Registriert: 22.01.2019

erstellt am: 08. Feb. 2019 12:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich hatte in meinem letzten Post geschrieben: "Ausführung des Codes wurde unterbrochen"

Das ist auch schon alles, was ich als Fehlermeldung bekommen habe.

Nach langem Suchen im Internet habe ich allerdings eine Erklärung dafür gefunden: wenn aus irgendeinem Grund ein Makro abgewürgt wurde, kann es vorkommen, dass Excel weiterhin nach einem zufälligem System Makros abwürgt. Ist anscheinend ein bekannter Bug. Als Lösung kann man im Debugger zweimal Strg+Pause und dann F5 drücken und der Fehler sollte nicht weiter auftreten.

Das hat bei mir jedenfalls geklappt und jetzt bekomme ich auch keine willkürlichen Fehlermeldungen mehr. Und das sogar ohne Application.Calculation-Befehl.

Ich bin mit meinem kleinen Projekt jedenfalls erstmal zu einem zufriedenstellenden Ende gekommen und bedanke mich herzlich bei allen, die mir mit Rat und Tat zur Seite gestanden haben.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz