Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Menüpunkt per VBA Befehl ausführen

Forumthread: Menüpunkt per VBA Befehl ausführen

Menüpunkt per VBA Befehl ausführen
07.08.2014 19:02:20
Peter
Guten Abend,
ich suche einen Befehl wie ich aus dem Menü "Daten" den Punkt "alle aktualsieren" ausführen kann.
funktioniert das evtl. per Application.Dialogs( ... ) ?
Grüße
Peter

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ActiveWorkbook.RefreshAll owT
07.08.2014 19:09:06
robert

AW: ActiveWorkbook.RefreshAll owT
07.08.2014 19:38:15
Peter
Vielen Dank für Deine schnelle Antwort,
den Befehl hatte ich schon mal ausprobiert. Ohne die Befehlszeile "application.wait...) hat dies auch funktioniert. Jedoch wurden die Daten kopiert, bevor die Aktualisierung durchgeführt wurde.
Deswegen wollte ich zwischen der Aktualisierung und dem kopieren der Daten eine Verzögerung einbauen.
Mit Application Wait pausiert die ganze Ausführung. Erst nach den 20 Sekunden erfolgt hier die Bearbeitung. Gibt es auch einen Befehl, wie man solch eine Verzögerung zwischen den Befehlen einfügen kann?
Grüße
Sub kopieren17302200()
With ActiveWorkbook
ActiveWorkbook.RefreshAll
Application.Wait (Now + TimeValue("0:00:20"))
.Worksheets("RealtimeEinzelvergleich").Range("q2:q31").Copy
.Worksheets("1730-2200").Range("A1").PasteSpecial Paste:=xlValues
.Worksheets("RealtimeEinzelvergleich").Range("u2:u31").Copy
.Worksheets("1730-2200").Range("B1").PasteSpecial Paste:=xlValues
Application.Wait Now + TimeSerial(0, 0, 0.5)
.Worksheets("1730-2200").Range("d1:e30").Copy
.Worksheets("1730-2200").Range("g1").PasteSpecial Paste:=xlValues
End With
End Sub

Anzeige
AW: Menüpunkt per VBA Befehl ausführen
07.08.2014 19:12:45
Daniel
Hi
Solche Fragen kannst du dir doch leicht selbst mit Hilfe des Makrorecorder beantworten, dazu ist das Teil da.
Gruß Daniel
Anzeige
Anzeige

Infobox / Tutorial

Menüpunkt per VBA Befehl ausführen


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei, in der du den VBA-Befehl ausführen möchtest.

  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)".
    • Wähle "Einfügen" und dann "Modul".
  4. Kopiere den folgenden Code in das Modul:

    Sub kopieren17302200()
       With ActiveWorkbook
           ActiveWorkbook.RefreshAll
           Application.Wait (Now + TimeValue("0:00:20"))
           .Worksheets("RealtimeEinzelvergleich").Range("q2:q31").Copy
           .Worksheets("1730-2200").Range("A1").PasteSpecial Paste:=xlValues
           .Worksheets("RealtimeEinzelvergleich").Range("u2:u31").Copy
           .Worksheets("1730-2200").Range("B1").PasteSpecial Paste:=xlValues
           Application.Wait Now + TimeSerial(0, 0, 0.5)
           .Worksheets("1730-2200").Range("d1:e30").Copy
           .Worksheets("1730-2200").Range("g1").PasteSpecial Paste:=xlValues
       End With
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle kopieren17302200 aus und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Fehler: "Das Objekt unterstützt diese Eigenschaft oder Methode nicht."

    • Lösung: Überprüfe die Namen der Arbeitsblätter und stelle sicher, dass sie korrekt sind. Achte auf Groß- und Kleinschreibung.
  • Fehler: "Das Makro wurde nicht gefunden."

    • Lösung: Stelle sicher, dass das Makro im richtigen Modul gespeichert ist und der Name korrekt eingegeben wurde.
  • Problem mit der Verzögerung:

    • Wenn Application.Wait die gesamte Ausführung pausiert, kannst du stattdessen Application.OnTime verwenden, um eine Verzögerung gezielt einzufügen.

Alternative Methoden

Anstelle von Application.Wait kannst du die Sleep-Funktion verwenden. Dafür musst du die Windows API in dein Modul einfügen:

Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub kopierenMitSleep()
    With ActiveWorkbook
        ActiveWorkbook.RefreshAll
        Sleep 20000 ' Verzögert für 20 Sekunden
        ' Rest des Codes hier...
    End With
End Sub

Die Verwendung von Sleep kann die Ausführung nicht vollständig anhalten, sodass andere Prozesse weiterhin bearbeitet werden können.


Praktische Beispiele

Hier ist ein Beispiel, wie du einen Menüpunkt per VBA-Befehl ausführen kannst:

Sub Aktualisieren()
    Application.CommandBars("Daten").Controls("Alle aktualisieren").Execute
End Sub

Mit diesem Befehl kannst du direkt den Menüpunkt "Alle aktualisieren" ansteuern, ohne die Refresh-All Funktion nutzen zu müssen.


Tipps für Profis

  • Verwende den Makrorekorder: Der Makrorekorder ist ein hervorragendes Werkzeug, um die Excel VBA Befehle zu lernen. Er zeigt dir, welche VBA-Befehle für bestimmte Aktionen verwendet werden.
  • Dokumentiere deinen Code: Schreibe Kommentare in deinen Code, um die Funktionsweise der einzelnen Befehle zu erklären. Dies ist besonders nützlich, wenn du später den Code erneut überprüfen musst.
  • Erstelle eine Excel VBA Befehle Liste: Halte eine Übersicht über die häufigsten VBA Excel Befehle, die du verwendest, um schnell darauf zugreifen zu können.

FAQ: Häufige Fragen

1. Frage: Wie kann ich sicherstellen, dass mein Makro nur bei aktiven Daten ausgeführt wird?
Antwort: Du kannst eine Bedingung hinzufügen, die überprüft, ob die Daten in den entsprechenden Zellen vorhanden sind, bevor das Makro ausgeführt wird.

2. Frage: Was mache ich, wenn ich keine VBA-Befehle verwenden kann?
Antwort: Du kannst die Daten auch manuell aktualisieren oder Excel-Funktionen nutzen, um die Daten zu bearbeiten, jedoch ohne die Automatisierung, die VBA bietet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige