VBA SendKeys - funktioniert nicht

Hallo zusammen,

Ich habe ein Problem mit der Sendkeys Methode.

Im Grunde funktioniert meine SendKeys - Methode. Mit folgenden Code:

Private Sub CommandButton1_Click()
Range(„A5“).Select
Application.SendKeys ("{DOWN}")
End Sub

Aber sobald ich weiter im Code mache reagiert SendKeys nicht mehr. Folgender Code:

Private Sub CommandButton1_Click()
Range(„A5“).Select
Application.SendKeys ("{DOWN}")
MsgBox „Test“, , „test“
End Sub

Kann man das mit den SendKeys auch über API etc. machen? Oder gibt es eine simple Erklärung??

Danke und Gruß
dnbma

Hallo dnbma,

Private Sub CommandButton1_Click()
Range(„A5“).Select
MsgBox „Test“, , „test“
Application.SendKeys ("{DOWN}")
End Sub

Kann man das mit den SendKeys auch über API etc. machen? Oder
gibt es eine simple Erklärung??

Was hast du vor, wieso nicht gleich A6 auswählen?

Gruß
Reinhard

Grüezi dnbma

Ich habe ein Problem mit der Sendkeys Methode.

Ja, das glaube ich gerne - nicht nut Du… :wink:

Im Grunde funktioniert meine SendKeys - Methode. Mit
folgenden Code:

Private Sub CommandButton1_Click()
Range(„A5“).Select
Application.SendKeys ("{DOWN}")
End Sub

Kann man das mit den SendKeys auch über API etc. machen?

Das kann man bestimmt auch ohne SendKeys machen!

Was genau soll dabei denn geschehen?
Warum selektierst Du einzelne Zellen? Das ist in aller Regel nicht notwendig.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo,

Die Zelle A6 will ich ja gar nicht selektieren, sonst hätte ich ja auch mitt „offset“ arbeiten können. Also die Zelle A5 ist eine Überschrift mit Autofilter funktion, deshalb wollte ich es mit Tastendruck nach unten machen.

Ich hoffe Ihr verstehts.

Grüße
dnbma

Die Zelle A6 will ich ja gar nicht selektieren, sonst hätte
ich ja auch mitt „offset“ arbeiten können. Also die Zelle A5
ist eine Überschrift mit Autofilter funktion, deshalb wollte
ich es mit Tastendruck nach unten machen.
Ich hoffe Ihr verstehts.

Hallo dnbma,

ich glaube zu wissen was du meinst, das hatte ich doch erst vor paar Wochen mit dem Pfeil einer Gültigkeitszelle (Daten–Gültigkeit)
Soweit wie ich mich erinnere ging das mit Alt + PfeilnachUnten.

Und bei mir ging das nicht, bei allen anderen aber problemlos, liegt an XL97 o.ä. *nicht mehr sicher weiß*

Gruß
Reinhard

Hallo,

Gibt es dann eine Möglichkeit das irgendwie zu umgehen, also ohne „SendKey“. Ich weiß nämlich nicht wie ich es sonst machen soll :frowning:.

Grüße
dnbma

Grüezi dnbma

Gibt es dann eine Möglichkeit das irgendwie zu umgehen, also
ohne „SendKey“. Ich weiß nämlich nicht wie ich es sonst machen
soll :frowning:.

…vielleicht schilderst Du mal, *was genau* Du denn eigentlich tun möchtest?

Mir zumindest ist das bisher nicht klar geworden… :frowning:


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Gibt es dann eine Möglichkeit das irgendwie zu umgehen, also
ohne „SendKey“. Ich weiß nämlich nicht wie ich es sonst machen
soll :frowning:.

…vielleicht schilderst Du mal, *was genau* Du denn
eigentlich tun möchtest?

Mir zumindest ist das bisher nicht klar geworden… :frowning:

Grüezi Zhomas,

glauben bedeutet kein Wissen zu haben,
ich glaube dbnm will auf Zelle A5 hüpfen und dann den Klick auf den Pfeil des Autofilters per Vba simulieren.

Und ähnlich ist ja Daten-Gültigkeit-Liste, da war vor Wochen eine Anfrage wie man es erreicht daß die Liste automatisch aufklappt wenn man in die Zelle hüpft.
Da fand ich im Inet mehrfach daß dies mit Sendkeys und Alt undPfeilnachUnten gehen soll.

Bei mir ging es nicht, ich mutmaße wegen XL97, kann das aber nicht sicher sagen.

Gruß
Reinhard


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo zusammen,

dann habe ich mich falsch ausgedrückt… Sorry.

Ich habe in Zeile 5, 4 Spalten (A,B,C,D bzw.= A5, B5, C5, D5), und in jeder ist ein Filter aktiviert, sodass Zeile ausgeblendet werden, also ist die Zeile nach A5 z.B. A255 und die will ich dann anspringen. Da aber nicht alle Zeile ausgefüllt sind, wäre es das einfachste es mit der Taste {DOWN} abzuspringen.

Ach und

  • Selection.End(xlDown).Select
    und
  • ActiveCell.Offset(0, 1).Select

funktionieren in diesem Fall nicht.

Deshabl Frage ich auch ob es vll. mit einer anderen („nicht VBA Funktion“ - Windows Befehl) geht.

Hoffe ich habs verständlich geschildert.

Grüße
dnbma

Erste sichtbare Zelle anwählen per Vba

Ich habe in Zeile 5, 4 Spalten (A,B,C,D bzw.= A5, B5, C5, D5),
und in jeder ist ein Filter aktiviert, sodass Zeile
ausgeblendet werden, also ist die Zeile nach A5 z.B. A255 und
die will ich dann anspringen. Da aber nicht alle Zeile
ausgefüllt sind, wäre es das einfachste es mit der Taste
{DOWN} abzuspringen.

Deshabl Frage ich auch ob es vll. mit einer anderen („nicht
VBA Funktion“ - Windows Befehl) geht.

K.A. Probier dieses mal:

sub tt()
Range(Range(„A5“), Range(„A5“).End(xlDown)).Range(„A2“).Select
end sub

Gruß
Reinhard

Grüezi dnbma

Nun kommt endlich Licht ins Dunkel… :wink:

Ich habe in Zeile 5, 4 Spalten (A,B,C,D bzw.= A5, B5, C5, D5),
und in jeder ist ein Filter aktiviert, sodass Zeile
ausgeblendet werden, also ist die Zeile nach A5 z.B. A255 und
die will ich dann anspringen. Da aber nicht alle Zeile
ausgefüllt sind, wäre es das einfachste es mit der Taste
{DOWN} abzuspringen.

Hoffe ich habs verständlich geschildert.

Mit anderen Worten:
Du hast einen Auftofilter gesetzt und möchtest nun die erste sichtbare Zelle in einer bestimmten Spalte anspringen.

…waum nicht gleich so?

Verwende dazuu die folgende Zeile für Spalte A:

Range(„A6“, Range(„A6“).End(xlDown)).SpecialCells(xlCellTypeVisible).Range(„A1“).Select

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo zusammen,

Ich habe eure Lösungswege probiert, leider ohne Erfolg, es werden irgendwelche anderen Zellen markiert.

Ich habe eine Beispiel-Datei geuppt.

http://www.hostarea.de/server-03/Maerz-c8252ab540.xls

Grüße dnbma

Grüezi dnbma

Ich habe eure Lösungswege probiert, leider ohne Erfolg, es
werden irgendwelche anderen Zellen markiert.

…das liegt daran, dass Du nach wie vor nicht gesagt hast, was genau Du eigenltich tun willst.

Ich habe eine Beispiel-Datei geuppt.

http://www.hostarea.de/server-03/Maerz-c8252ab540.xls

…das wird erst in der Mappe etwas klarer, gehört aber hier in einen Beitrag und nicht in eine Mappe, die irgendwann nicht mehr erreichbar sein wird.

Gehe die Sache anderes an:

Du willst immer in die unterste Zeile schreiben, die noch nicht belegt ist.
Gibt es eine Spalte, die immer komplett mit Daten gefüllt ist?
Dann kannst Du die Anzahl dieser Einträge ermitteln und weisst dann genau in welcher Zeile Du schreiben sollst.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo,

ja die Spalte C.

Grüße
dnbma

Grüezi dnbma

ja die Spalte C.

OK, dann zähle die Anzahl Einträge in Spalte C, verschiebe von einem Ausgangspunkt aus die aktive Zelle (z.B.) und schreibe dann deine Daten dorthin.

Die folgende Zeile markiert dir in Spalte A die nächste leere Zelle, abhängig der Anzahl Einträge in Spalte C:

Range(„A4“).Offset(WorksheetFunction.CountA(Range(„C:C“)), 0).Select

Damit solltest Du nun IMO weiter kommen… :wink:


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

ja die Spalte C.

Hallo dnbma,

in das Klassenmodul Tabelle1:

Private Sub CommandButton1_Click()
Dim Zei As Long
Zei = Cells(Rows.Count, 3).End(xlUp).Row + 1
Cells(Zei, 1) = TextBox1.Text
Cells(Zei, 2) = TextBox2.Text
Cells(Zei, 3) = Cells(Zei - 1, 3) + 1
Cells(Zei, 4) = TextBox4.Text
End Sub

Gruß
Reinhard

Hallo,

Super, Danke, hat perfekt geklappt!!

Grüße
dnbma