Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gibt es Alternative zu Sendkey Befehl ?

Forumthread: Gibt es Alternative zu Sendkey Befehl ?

Gibt es Alternative zu Sendkey Befehl ?
03.03.2014 16:22:32
Kruse
Hallo Zusammen
ich muss euch schon wieder mit einer Frage behelligen.
Ich habe ein Makro welches mit SendKeys "%{down}" endet. Das klappt prima, Dropdown der Zelle (Listenfeld) wird geöffnet. Das Proplem ist nur das mir sendkeys den Numlock deaktiviert und beim nächsten sendkeys wieder aktiviert. Das scheint wohl ein bekanntes Problem zu sein. Daher würde ich gerne sendkeys durch einen anderen Befehl ersetzen. Gibt es da eine Möglichkeit
Gruss
Peter

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Gibt es Alternative zu Sendkey Befehl ?
03.03.2014 16:48:30
EtoPHG
Hallo Peter,
Die Alternative heisst: "Komplett auf Sendkeys verzichten". Ich hab bis jetzt noch kein VBA-Problem innerhalb von Excel angetroffen, dass auf Sendkeys angewiesen war. Sendkeys ist höchstens im Zusammenspiel Excel/Fremdapplikationen sinnvoll, aber eben sehr fehleranfällig und nicht wasserdicht!
Warum willst du ein Dropdown mit Code aktivieren? Willst du dem Benutzer Arbeit und Denken ersparen?
Gruess Hansueli

Anzeige
AW: Gibt es Alternative zu Sendkey Befehl ?
03.03.2014 17:14:01
Kruse
Hallo Hansueli
Ich möchte liebend gern auf sendkeys verzichten, aber ich finde es einfach praktisch wenn das Dropdown am Ende aufgeht, da das Makro bei der Datenfülle schon mal so 5-8 Sekunden laufen kann. Und wenn das Dropdown aufgeht weiß ich das das Makro fertig ist.
Gruss
Peter

Anzeige
Sendkeys, damit man weiss ob Makro fertig...
03.03.2014 18:43:43
EtoPHG
ist ein "Von hinten durch die Brust ins Auge"-Ansatz, Peter
Mit Application.Cursor = xlWait am Anfang und Application.Cursor = xlDefault am Ende des Codes, zeigt der Cursor eine Sanduhr und wenn fertig wieder den normalen Cursor. Das dürfte genügend Hinweis für das Warten sein! Zudem macht ein moderner Computer in in 5-8 Sekunden ein paar Milliönchen von Berechnungen, da dürfte also noch einiges am Code zu optimieren sein.
Gruess Hansueli

Anzeige
AW: Sendkeys, damit man weiss ob Makro fertig...
03.03.2014 19:12:28
Kruse
Hallo Hansueli
Das das so lange dauert hat mich auch schon länger gewundert. Habe jetzt mal "suchen Werte" in Zeilen 5:10000 auf Bereich B5:P10000 geändert. Wow ... ratzfatz fertig ... warum auch immer.
Damit ist eine Sanduhr überhaupt nicht zu sehen, so schnell geht das.
Da du als Profi auch noch keine Lösung für meinen Wunsch parat hast, gehe ich mal davon aus das es sich wirklich schwierig gestaltet das Dropdownfeld aufgehen zu lassen. Wäre schade da ich es einfach praktisch fände und weil ich es mit sendkeys so gewohnt war. Leider macht mir sendkeys aber nun mit der neuen Logitech Tastatur die geschilderten Probleme.
Vielleicht hast du ja noch eine Idee
Gruss
Peter

Anzeige
AW: Sendkeys, damit man weiss ob Makro fertig...
04.03.2014 08:21:58
EtoPHG
Hallo Peter,
Ein Profi bin ich mitnichten. Stell doch mal eine anonymisierte Beispielmappe zur Verfügung.
'Dropdown'-Feld ist eine zu allgemeine Bezeichung um sich eine konkrete Vorstellung von der Anwendung machen zu können.
Gruess Hansueli
;
Anzeige
Anzeige

Infobox / Tutorial

Alternativen zum Sendkey Befehl in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic for Applications (VBA) Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Erstelle ein neues Modul: Klicke im Menü auf Einfügen > Modul.

  3. Verwende den Code für das Dropdown: Statt SendKeys kannst du das Dropdown-Feld direkt über den Code aktivieren. Hier ist ein Beispiel, wie du das machen kannst:

    Sub DropdownAktivieren()
       Dim rng As Range
       Set rng = ThisWorkbook.Sheets("DeinBlatt").Range("A1") ' Ändere den Blattnamen und die Zelle
       rng.Validation.ShowInput = True
       rng.Select
    End Sub
  4. Teste dein Makro: Führe das Makro aus und überprüfe, ob das Dropdown wie gewünscht angezeigt wird.


Häufige Fehler und Lösungen

  • Fehler: Das Dropdown öffnet sich nicht.

    • Lösung: Stelle sicher, dass die Zelle eine Datenvalidierung hat. Überprüfe die Einstellungen in Daten > Datenvalidierung.
  • Fehler: NumLock wird deaktiviert.

    • Lösung: Vermeide die Verwendung von SendKeys, da es häufig unerwünschte Nebeneffekte hat. Nutze stattdessen direkte Methoden, wie im obigen Beispiel gezeigt.

Alternative Methoden

  • Direkte Manipulation: Anstatt SendKeys zu verwenden, kannst du die Eigenschaften eines Dropdowns direkt ändern. Hier ist eine Möglichkeit, wie du die Auswahl ohne SendKeys änderst:

    Sub AuswahlAendern()
       ThisWorkbook.Sheets("DeinBlatt").Range("A1").Value = "NeuerWert" 'Ändere den Blattnamen und den Wert
    End Sub
  • Verwendung von Formeln: In einigen Fällen kannst du auch Formeln verwenden, um dynamische Dropdowns zu erstellen, die sich entsprechend ändern, ohne dass SendKeys benötigt wird.


Praktische Beispiele

  • Beispiel für das Öffnen eines Dropdowns:

    Sub DropdownOeffnen()
       Dim rng As Range
       Set rng = ThisWorkbook.Sheets("DeinBlatt").Range("A1")
       If rng.Validation.Type <> 0 Then
           rng.Select
           Application.SendKeys "%{down}" ' Letzte Möglichkeit, falls kein anderer Weg funktioniert
       End If
    End Sub
  • VBA Code zur Verbesserung der Leistung:

    Sub OptimierterCode()
       Application.ScreenUpdating = False
       ' Dein Code hier
       Application.ScreenUpdating = True
    End Sub

Tipps für Profis

  • Vermeide SendKeys: Es ist oft fehleranfällig und kann zu unvorhersehbaren Ergebnissen führen. Nutze stattdessen die direkten Methoden, um die Benutzererfahrung zu verbessern.

  • Nutze Application.Cursor: Zeige den Benutzer, dass dein Makro arbeitet. Du kannst den Cursor auf eine Sanduhr setzen:

    Application.Cursor = xlWait
    ' Dein Code
    Application.Cursor = xlDefault
  • Profiling deines Codes: Mache regelmäßig Leistungsanalysen deines VBA-Codes, um Engpässe zu identifizieren und die Effizienz zu steigern.


FAQ: Häufige Fragen

1. Welche Probleme kann SendKeys verursachen?
SendKeys kann dazu führen, dass NumLock deaktiviert wird und ist nicht zuverlässig, da es von der aktuellen Benutzerschnittstelle abhängt.

2. Gibt es eine einfachere Methode, um ein Dropdown zu öffnen?
Ja, du kannst die Zelle mit der Datenvalidierung auswählen und die Eingabeaufforderung aktivieren, ohne SendKeys zu verwenden.

3. Wie kann ich die Leistung meines Makros optimieren?
Vermeide Bildschirmaktualisierungen mit Application.ScreenUpdating = False und führe nur notwendige Berechnungen durch.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige