Post by LuckyJoe » 08 Aug 2018, 16:04
Hallo Sven,
willkommen im Forum; natürlich gibt es immer viele Wege, die nach Rom führen, aber taste dich am besten langsam vor. Dein Script funktioniert ja schon mal, man kann es etwas kürzen:
Code: Select all
^SC029::
SendInput, {Home}
SendInput, (
SendInput, {Right 4}
SendInput, {+}
SendInput, 2
SendInput, {End}
SendInput, )
SendInput, *
Return
Im Detail:
Statt 9x
SendInput, {Left} aufzurufen, kannst du mit "POS1" (
{Home}) gleich an den Anfang deiner Zellberabeitung springen. Das hat zudem den Vorteil, dass du auch Zahlen über "9,99" überspringen kannst.
"Normale" Zeichen musst du nicht in geschweifte Klammern setzen, so dass
SendInput, ( reicht.
Statt 4x
SendInput, {Right} zu schreiben, geht es einfacher mit
SendInput, {Right 4}.
Bei
SendInput, {+} muss das "+" in geschweifte Klammern, da sonst die nächste Eingabe mit "Shift" gesendet wird.
Bei
SendInput, 2 kannst du die geschweiften Klammern wieder weglassen.
Statt 5x
SendInput, {Right} zu schreiben, kannst du jetzt wieder mit
SendInput, {End} unmittelbar an das Ende ddeiner Zellebearbeitung springen.
Die beiden letzten Zeilen schenke ich mir.
Setzt du vor dem ersten
SendInput, {Home} noch die Zeile
SendInput, {F2}, dann sparst du dir nach dem Klick auf die Zelle den nächsten Klick in die Bearbeitungszeile - wieder etwas gespart
Du kannst natürlich noch flexibler werden, wenn du den Zellwert beispielsweise in die Zwischenablage einliest (schau mal in der Hilfe nach "Clipboard") und dort nach der Position des "*" suchst. Dann kannst du die Zwischenablage oder einzelne Zeichen darin ersetzen (Hilfe: "Replace").
Letztendlich gibt es auch die Möglichkeit, Excel über das "ComObjActive" direkt anzusprechen, Zellwerte auszulesen, zu bearbeiten und zurückzuschreiben. ... Und dann gibt es noch ... nein, das sollte für's erste reichen.
Viel Erfolg!
Viele Grüße - Lucky Joe.
Hallo Sven,
willkommen im Forum; natürlich gibt es immer viele Wege, die nach Rom führen, aber taste dich am besten langsam vor. Dein Script funktioniert ja schon mal, man kann es etwas kürzen:
[code]^SC029::
SendInput, {Home}
SendInput, (
SendInput, {Right 4}
SendInput, {+}
SendInput, 2
SendInput, {End}
SendInput, )
SendInput, *
Return
[/code]
Im Detail:
Statt 9x [c]SendInput, {Left}[/c] aufzurufen, kannst du mit "POS1" ([c]{Home}[/c]) gleich an den Anfang deiner Zellberabeitung springen. Das hat zudem den Vorteil, dass du auch Zahlen über "9,99" überspringen kannst.
"Normale" Zeichen musst du nicht in geschweifte Klammern setzen, so dass [c]SendInput, ([/c] reicht.
Statt 4x [c]SendInput, {Right}[/c] zu schreiben, geht es einfacher mit [c]SendInput, {Right 4}[/c].
Bei [c]SendInput, {+}[/c] muss das "+" in geschweifte Klammern, da sonst die nächste Eingabe mit "Shift" gesendet wird.
Bei [c]SendInput, 2[/c] kannst du die geschweiften Klammern wieder weglassen.
Statt 5x [c]SendInput, {Right}[/c] zu schreiben, kannst du jetzt wieder mit [c]SendInput, {End}[/c] unmittelbar an das Ende ddeiner Zellebearbeitung springen.
Die beiden letzten Zeilen schenke ich mir.
Setzt du vor dem ersten [c]SendInput, {Home}[/c] noch die Zeile [c]SendInput, {F2}[/c], dann sparst du dir nach dem Klick auf die Zelle den nächsten Klick in die Bearbeitungszeile - wieder etwas gespart ;-)
Du kannst natürlich noch flexibler werden, wenn du den Zellwert beispielsweise in die Zwischenablage einliest (schau mal in der Hilfe nach "Clipboard") und dort nach der Position des "*" suchst. Dann kannst du die Zwischenablage oder einzelne Zeichen darin ersetzen (Hilfe: "Replace").
Letztendlich gibt es auch die Möglichkeit, Excel über das "ComObjActive" direkt anzusprechen, Zellwerte auszulesen, zu bearbeiten und zurückzuschreiben. ... Und dann gibt es noch ... nein, das sollte für's erste reichen.
Viel Erfolg!
Viele Grüße - Lucky Joe.