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

Sendkeys{F2} umgehen

Forumthread: Sendkeys{F2} umgehen

Sendkeys{F2} umgehen
17.07.2018 11:30:02
scipiol
Hallo liebe Forumsteilnehmer,
bis jetzt habe ich weder hier im Forum noch in anderen Foren die entsprechende Antwort auf meine Frage gefunden.
Ich möchte nur eine simple Summe bilden, allerdings nicht mit der WorksheetFunction über ein Macro arbeiten, sondern mit dem Macro den Summenbefehl in eine Zelle eingeben. Warum? Die Summe soll sich immer angleichen, ohne dass der Anwender jedesmal das Makro starten muss.
Option Explicit
Sub Sum()
Range("C24").Value = WorksheetFunction.Sum(Range("C10:C22"))
Range("C26").Value = "=SUMME(C10:C22)"
With Range("C26")
.Activate
SendKeys "{F2 + ENTER}", True
End With
End Sub

So wie in der zweiten Codezeile soll es werden. Er fügt es auch entsprechend ein, führt es aber nicht aus. Hierzu muss ich mit F2+Enter manuell nachhelfen. Darum habe ich das auch schon automatisiert. Dabei bekomme ich jedoch immer wieder einen Fehler, weil VBA dann eine interne Bibliothek mit allen Klassen und Objekten öffnen möchte.
Darum meine Frage, wie kann ich das Senden von F2 umgehen? Bzw. habe ich einen anderen Fehler eingebaut, den ich nicht bemerkt habe?
Danke jetzt schonmal und freundliche Grüße,
Scipiol
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sendkeys{F2} umgehen
17.07.2018 11:37:36
PeterK
Hallo
Range("C26").Formula = "=SUM(C10:C22)"
Danke
17.07.2018 11:42:28
scipiol
...für die schnelle Antwort!
AW: Sendkeys{F2} umgehen
18.07.2018 09:34:58
scipiol
Hallo Peter,
für die ganz normale Summenbildung hat es mit deiner Lösung geklappt.
Nun habe ich jedoch etwas komplexere Formeln wie Countif oder Sumif.
ActiveSheet.Range("N" & (h + 5)).Select
ActiveCell.FormulaR1C1 = "=COUNTIF(R2C4:R" & letztezeilews & "C4, ""=""&RC[3])"
ActiveSheet.Range("M" & (h + 5)).Select
ActiveCell.FormulaR1C1 = "=SUMIFS(R2C3:R" & letztezeilews & "C3, R2C4:R" & letztezeilews & "C4,""=""&RC[4])" 
Dabei hängt sich das Makro immer auf.
Bei 20 Zellen funktioniert es im Schleifendurchlauf problemlos, dann wird die Formel eingefügt als Text, jedoch nicht ausgeführt (Die Zellen sind auf Zahlenformatr gesetzt).
Diesbezüglich schon Erfahrung und auch eine Lösung?
Mfg scipiol
Anzeige
AW: Sendkeys{F2} umgehen
18.07.2018 09:57:14
Daniel
Hi
Warum Schleife?
Du kannst die Formel auch in alle Zellen gleichzeitig eintragen.
Ansonsten wäre es interessant zu wissen, in wie viele Zellen die Formel kommt und was die letzte Zeile des Suchbereichs ist. Up
Gruß Daniel
AW: Sendkeys{F2} umgehen
18.07.2018 10:02:29
scipiol
Hi Daniel,
etwas missverständlich geschrieben. Ich füge per Schleife die Formeln ein...
Hab es jetzt aber anscheinend selbst gelöst bekommen, indem ich die Zelle vorher per Makro auf Standart setze.
Danke trotzdem!
Grüße scipiol
Anzeige
AW: Sendkeys{F2} umgehen
18.07.2018 10:30:23
Daniel
Dann hättest du vorher in den Zellen in denen die Formel als Text angezeigt wurde, das Zahlenformat "Text" eingestellt.
Gruß Daniel
;
Anzeige

Infobox / Tutorial

Sendkeys und Excel VBA effizient nutzen


Schritt-für-Schritt-Anleitung

Um die Funktion SendKeys in Excel VBA zu umgehen und dennoch Formeln automatisch in eine Zelle einzufügen, kannst du folgende Schritte befolgen:

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf dein Projekt klickst und Einfügen > Modul wählst.

  3. Kopiere und füge den folgenden Code ein:

    Option Explicit
    Sub Sum()
       Range("C24").Value = WorksheetFunction.Sum(Range("C10:C22"))
       Range("C26").Formula = "=SUMME(C10:C22)"
    End Sub
  4. Ändere die Formel in der letzten Zeile, um sie ohne SendKeys auszuführen. Stattdessen verwende .Formula oder .FormulaR1C1, um sicherzustellen, dass die Formel korrekt eingegeben wird.

    ActiveSheet.Range("C26").Formula = "=SUM(C10:C22)"
  5. Speichere das Makro und führe es aus.


Häufige Fehler und Lösungen

  1. Formel wird als Text angezeigt: Dies kann passieren, wenn die Zelle zuvor als "Text" formatiert war. Stelle sicher, dass die Zelle als "Standard" oder "Zahl" formatiert ist, bevor du die Formel einfügst.

  2. Makro hängt sich auf: Wenn dein Makro bei komplexeren Formeln wie COUNTIF oder SUMIFS nicht funktioniert, überprüfe die Syntax und die Bereiche, die du angibst. Es könnte auch daran liegen, dass du die Zelle nicht ordnungsgemäß zurücksetzt, bevor du die Formel einfügst.

  3. SendKeys funktioniert nicht: Es ist oft besser, SendKeys zu vermeiden, da es unzuverlässig ist. Stattdessen solltest du die Werte direkt über .Value oder .Formula setzen.


Alternative Methoden

Statt SendKeys zu verwenden, kannst du auch diese Methoden nutzen:

  • Direktes Einfügen von Formeln: Nutze .Formula oder .FormulaR1C1, um Formeln direkt in die Zellen einzufügen, ohne die Tasteneingabe zu simulieren.
  • Array-Formeln: Wenn du viele Zellen gleichzeitig aktualisieren möchtest, kannst du auch Array-Formeln verwenden, um die Leistung zu verbessern.
Dim formulaArr As Variant
formulaArr = Array("=COUNTIF(R2C4:R10C4,""=""&RC[3])", "=SUMIFS(R2C3:R10C3,R2C4:R10C4,""=""&RC[4])")
ActiveSheet.Range("M2:M3").FormulaR1C1 = formulaArr

Praktische Beispiele

Hier sind einige nützliche Szenarien, in denen du VBA ohne SendKeys verwenden kannst:

  1. Summe berechnen:

    Sub BerechneSumme()
       ActiveSheet.Range("C26").Formula = "=SUM(C10:C22)"
    End Sub
  2. COUNTIF und SUMIFS verwenden:

    Sub BerechneBedingteSumme()
       ActiveSheet.Range("N2").FormulaR1C1 = "=COUNTIF(R2C4:R10C4,""=""&RC[3])"
       ActiveSheet.Range("M2").FormulaR1C1 = "=SUMIFS(R2C3:R10C3,R2C4:R10C4,""=""&RC[4])"
    End Sub

Tipps für Profis

  • Vermeide SendKeys, um unerwartete Ergebnisse zu verhindern.
  • Verwende .Formula oder .FormulaR1C1, um Formeln direkt zu setzen.
  • Stelle sicher, dass du die Zellen richtig formatierst, bevor du die Formel einfügst.
  • Nutze Option Explicit, um Fehler zu minimieren und die Lesbarkeit deines Codes zu verbessern.

FAQ: Häufige Fragen

1. Warum sollte ich SendKeys vermeiden?
SendKeys kann unzuverlässig sein und führt oft zu unerwarteten Verhalten, besonders wenn die Benutzeroberfläche von Excel nicht im Vordergrund ist.

2. Wie setze ich eine Formel für mehrere Zellen gleichzeitig?
Du kannst ein Array von Formeln erstellen und diese dann auf einmal in den Zielbereich einfügen, um die Leistung zu verbessern.

3. Was mache ich, wenn die Formel nicht ausgeführt wird?
Überprüfe die Zellformatierung und stelle sicher, dass die Formel syntaktisch korrekt ist. Manchmal hilft es, die Zelle zuerst zurückzusetzen.

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