Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
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

Sendkeys ladet nicht in der Zelle, sondern in VBA

Sendkeys ladet nicht in der Zelle, sondern in VBA
14.02.2020 17:57:25
guennih
Hallo,
in den Tiefen meiner Makros verwende ich folgenden Code:

Application.ScreenUpdating = True
Cells(StrtZei, M_Sp_Sta).Select
FormulaTxt = "hier kommt eine lange Formel, die 255 Zeichen überschreitet, aber als  _
Matrixfunktion rein muss. deshalb wollte ich einen Trick anwenden und die Formel ohne Matrix in  _
_
_
die Zelle schreiben, und dann  mit Sendkeys F2 sowier [Ctrl][Shift][Return]senden"
Debug.Print "Formeln_einfügen: Formellänge= " & Len(FormulaTxt)
Debug.Print FormulaTxt
Selection.Formula = FormulaTxt
Cells(StrtZei, M_Sp_Sta).Application.ActiveWindow.Activate
SendKeys "{F2}", True
SendKeys "^+{Enter}", True

Die Sendkeys -Befehle landen aber nicht in der Zelle, sondern es aktiviert sich VBA und dieses bekommt den F2 ab
was mache ich falsch?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sendkeys ladet nicht in der Zelle, sondern in VBA
14.02.2020 18:16:55
Daniel
HI
Starte Makros, die SendKeys verwenden, immer direkt aus der Exceldatei (über das Menü "Makro" oder einen Button) und nicht aus dem Editor heraus, so dass Excel für Windows die aktive Datei ist, auf welche die Tastatureingaben wirken.
Ein testen der SendKeys-Funktionen im Einzelstepmodus (?Debug.Print?) ist daher logischerweise nicht möglich.
Gruß Daniel
AW: Sendkeys ladet nicht in der Zelle, sondern in VBA
14.02.2020 18:52:41
guennih
Ich starte das Makro von der Excel-Datei aus mit Button in der Ribbon-Leiste. Problem tritt auch auf, wenn ich VBA-Fenster geschlossen habe (also nicht nur wenn es im Hintergrund offen ist).
AW: Sendkeys ladet nicht in der Zelle, sondern in VBA
14.02.2020 19:40:37
Daniel
HI
dann kann ich das Problem nicht nachvollziehen.
bei mir funktioniert dein Code.
Gruß Daniel
Anzeige
AW: Sendkeys ladet nicht in der Zelle, sondern in VBA
14.02.2020 19:35:07
ChrisL
Hi
Autsch... wie wärs hiermit:
https://docs.microsoft.com/en-us/office/vba/api/excel.range.formulaarray
Müsstest die englische Schreibweise verwenden. Hierfür die Formel mal manuell eintragen und gucken:
debug.print activecell.formulaarray
Zudem ohne Schleife direkt auf den ganzen Bereich anwenden.
cu
Chris
AW: Sendkeys ladet nicht in der Zelle, sondern in VBA
14.02.2020 20:57:45
Luschi
Hallo guennih,
seit Windows-Vista macht der Vba-Befehl Application.SendKeys Probleme und M$ tut viel dafür, daß diese Probleme noch größer werden. So ist es seit Excel 2013 nicht mehr möglich, Folgendes in einem Zuge auszuführen:
- Vba-Kennwort einer AM entsperren
- gesamten Vba-Code zu löschen und neuen Vba-Code zu importieren
- Vba-Kennwort wieder zu setzen
- AM speichern
Diese Schritte liefen bei mir bis E_2010 in einem AddIn zur vollsten Zufriedenheit
Heute komme ich nur noch bis zur Vba-KW-Entsperrung, danach muß man sofort die weitere Ausführung abbrechen, sonst ist der KW-Schutz sofort wieder gesetzt und alles war umsonst!!!
Aber nun zu Deinem Problem und frohe Botschaft - Dir kann geholfen werden.
- folgende Array-Formel soll erstellt werden: =SUMME((C3:C5)*(D3:D5))
- der Code dazu sieht so aus:

Sub Machmal()
Dim WshShell As Object, s As String
Set WshShell = CreateObject("WScript.Shell")
With Range("G7")
.Value = ""
.Select
End With
s = "{F2}=SUMME{(}{(}C3:C5{)}*{(}D3:D5{)}{)}^+~"
WshShell.SendKeys s, True
Set WshShell = Nothing
End Sub
Es wird also das VBScript-Objekt 'WScript.Shell' benutzt, denn da hat M$ die Application.SendKeys-Zicken noch nicht eingebaut.
Nachteil alle Klammerarten gehören zu den Sondeertasten und müssen wie bei {F2} maskiert werden, deshalb {(} und {)}.
Bei mir läuft die Sache (E_2019 Pro+), aber nur von der Excel-Oberfläche mit Alt+F8 und nicht innerhalb des Vba-Editors.
Anzeige
AW: Sendkeys ladet nicht in der Zelle, sondern in VBA
16.02.2020 13:07:32
Guennih
Danke für den Tipp
Hat nichts erkenntliches verändert.
Was jetzt geholfen hat, war ein doevents nach dem Sendkeys
Dort steht in der Hilfe, dass alle Tastaturpuffer abgearbeitet werden.
ich hatte zu Testzwecken danach eine Warteschleife und dann einen "stop"
offensichtlich werden die Sendkeys-Befehle nicht innerhalb des Makros abgearbeitet, auch nicht bei Verwendung der wait-Option.
Trotzdem Danke für die Hilfe, ohne die Diskussion wär ich nicht auf den entscheidenden Test gekommen
AW: Sendkeys ladet nicht in der Zelle, sondern in VBA
16.02.2020 16:03:47
Luschi
Hallo guennih,
solange Du wirklich mit Excel-Version 'vor 2013' arbeitest, ist es so noch möglich. Wenn Du mal auf ein Update 'nach Excel 2010' umsteigst, sieht die Excel-Welt bei Application.SendKeys' schon wieder anders aus.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Sendkeys ladet nicht in der Zelle, sondern in VBA
16.02.2020 20:01:05
Guennih
Ein Excel-Update von 2010 auf vermutlich 2016 steht kutrz vor dem Rollout,
Weiß man denn, ob das Problem mit den Max 255 Zeichen bei FormulaArray damit behoben wird?
Dann brauche ich eine Verzweigung im Makro wo ich versionabhängig einmal mit Sendkeys und einmal mit FormulaArray arbeite.
AW: Sendkeys ladet nicht in der Zelle, sondern in VBA
17.02.2020 06:12:01
Luschi
Hallo guennih,
in Excel 2019 pro+ steht immer noch der Passus von max 255 Zeichen bei FormulaArray.
Gruß von Luschi
aus klein-Paris
AW: Sendkeys ladet nicht in der Zelle, sondern in VBA
17.02.2020 08:47:48
guennih
Na, das ist doch Abwärtskompatibilität vom Feinsten!

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige