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

Forumthread: Pro Zelle Zelle aktivieren und "Enter"

Pro Zelle Zelle aktivieren und "Enter"
22.09.2022 08:53:17
Simon
Hallo zusammen,
ich habe dank diesem Beitrag: https://www.herber.de/forum/archiv/208to212/210452_Textstring_in_Formel_umwandeln.html,
eine sehr lange Liste von Textketten in Formeln umgewandelt, im nächsten Schritt kann ich diese als Werte einfügen. Die Formel aktiviert sich aber erst als Formel wenn ich die Zelle aktiviere und "Enter" drücke.
Mein Makro Code tut für Excel aber noch nicht das was ich manuell mache: reinklicke und "Enter" drücken: Das kann doch eigentlich kein Problem sein, was mache ich falsch?

Sub Bereichbearbeiten()
Dim Zelle As Range
For Each Zelle In Selection
Zelle.Select
Zelle.Activate
Next Zelle
End Sub
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pro Zelle Zelle aktivieren und "Enter"
22.09.2022 08:58:40
{Boris}
Hi,
das Editieren ("Reinklicken") einer Zelle kannst Du nur mit OnKey simulieren. Dein bisheriger Code selektiert die Zellen nur.
Aber zeig doch mal einen Beispielstring in Deiner Beispieldatei - vielleicht gibt es eine bessere Lösung als OnKey.
VG, Boris
AW: Pro Zelle Zelle aktivieren und "Enter"
22.09.2022 09:36:04
Simon
https://www.herber.de/bbs/user/155319.xlsx , Dateibeispiel. Etwas abstrakt, aber nach der Umwandlung würde es ja immerhin Fehler zeigen.
Vielen, vielen Dank!
Anzeige
AW: Pro Zelle Zelle aktivieren und "Enter"
22.09.2022 09:56:19
{Boris}
Hi,
mit OnKey hatte ich mich verschrieben - sollte natürlich SendKeys heißen.

Sub F2_Enter()
Dim C As Range
For Each C In Selection
Application.SendKeys "{F2}"
Application.SendKeys "{Enter}"
Next C
End Sub
Den Code NICHT aus dem VBA-Editor heraus starten sondern aus dem Tabellenblatt. Vorher die Zellen selektieren, wo das passieren soll.
VG, Boris
Anzeige
AW: Pro Zelle Zelle aktivieren und "Enter"
22.09.2022 10:38:06
peterk
Hallo

Sub Bereichbearbeiten()
Dim Zelle As Range
For Each Zelle In Selection
Zelle.Value = Zelle.Value
Next Zelle
End Sub
Peter
in Formel umwandeln
22.09.2022 10:51:47
Rudi
Hallo,
sollte so funktionieren:

Sub aaa()
Dim r As Range
Set r = Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp))
r.FormulaLocal = r.Value
End Sub
Gruß
Rudi
Anzeige
AW: Pro Zelle Zelle aktivieren und "Enter"
22.09.2022 09:42:08
Oberschlumpf
Hi Simon
der Vba-Code...

Range("A1").Value = "=A2+A3"
...schreibt in die Zelle A1 einfach nur den Text "=A2+A3" rein - wie in deiner Bsp-Datei.
Aber der Code...

Range("A1").FormulaLocal = "=A2+A3"
...schreibt in die Zelle A1 auch ganz genau die Formel =A2+A3 rein, die eben auch sofort die Summe aus A2 und A3 errechnet.
Du könntest dir also mal die Funktion .FormulaLocal genauer ansehen.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Pro Zelle Zelle aktivieren und "Enter"
22.09.2022 09:49:31
Simon
Nein, nicht so ganz, ich habe den String per Verknüpfung und Formel erzeugt. Im Orginal sieht das in etwa so aus: ="="&$AO$1&$AP$1&$AO$1&AO1&"*"&$AO$1&$AQ$1&AN2&"/"&$AO$1&$AQ$1&$AO$1&AO1, das habe ich mit Wechseln umgewandelt und als Werte eingefügt. Und jetzt kann ich es eben nur per "Enter" aktivieren. Ich verstehe irgendwie nicht warum, oder was das Problem von dem String ist.
Anzeige
AW: Pro Zelle Zelle aktivieren und "Enter"
22.09.2022 09:53:53
Simon
Okay, manchmal sitzt man halt auch einfach auf dem Schlauch, hiermit löse ich mein Problem selbst:
Public Sub Test_f2()
'Alle Werte in Zahlenwerte umwandeln
Dim zelle2 As Object
For Each zelle2 In Selection
SendKeys "{F2}", True
SendKeys "{ENTER}", True
und als Werte eingefügt
22.09.2022 09:58:48
Rudi
Hallo,
anstatt als Werte als .FormulaLocal, wie Oberschlumpf schon schrieb.
Gruß
Rudi
Anzeige
AW: Pro Zelle Zelle aktivieren und "Enter"
22.09.2022 10:20:08
Oberschlumpf
Hi Simon,
ich bin kein Freund von SendKeys - damit kannst du auch ganz schnell mal ne Datei bzw ihren Inhalt "zerschießen".
Ja, ich weiß, SendKeys kann einiges - trotzdem - nich meins :-)
Und wenn 2 "Hin-und-wieder-mal-Schlaue" :-) (Rudi+ich) das Gleiche vorschlagen, könnte das doch richtig sein, oder?
hier mal deine Bsp-Datei zurück
https://www.herber.de/bbs/user/155321.xlsm
Achtung!
Wunder dich nicht - deine Datei sieht noch immer so aus, wie du sie uns gezeigt hast (ich will ja "mein Feuerwerk" nich versauen...hehe :-) )
Schau dir erst mal den hinzugefügten Code im VBE an - SO meinte ich das mit Formula...
Starte jetzt das Makro
Es werden nur die Inhalte in den Zeilen 2 bis 18 umgewandelt
(ich hatte keine Lust zu prüfen, ob das auch mit Leerzellen funktioniert)
Aber nun siehst du ja, wie das Ganze auch ohne SendKeys machbar ist - zumindest mit deiner Bsp-Datei.
Wenn das mit deinen Original-Texten, die zu echten Formeln werden sollen, nicht funktioniert - dann haste uns die falsche Bsp-Datei gezeigt!^^
Hilfts denn?
Ciao
Thorsten
Anzeige
AW: Pro Zelle Zelle aktivieren und "Enter"
22.09.2022 12:39:47
Daniel
Hi
Markiere den Bereich und führe die Menüfunktion ERSETZEN aus.
Ersetze dabei das "=" durch "=".
Wenn du das Ersetzten anwendest, dann ist das für Excel wie eine Neueingabe, dh es prüft, ob der neu entstandene Text eine Zahl ein Datum oder eine Formel sein könnten und wandelt ggf in das entsprechende um.
Also genau so wie in die Bearbeitungszeile klicken und dann Enter drücken, nur dass du das mit Ersetzen für viele Zellen gleichzeitig machen kannst, sofern es ein Zeichen gibt, Fass in allen Zellen vorkommt.
Beachte, dass bei Formeln diese dann mit A1-Adressen geschrieben sein müssen.
Wenn du das Ersetzen per VBA ausführen lässt Columns(1).Replace "=", "=", xlpart, müssen die Formeln amerikanisch geschrienen sein, dh englische Funktionsnamen, Komma als Parametertrenner und Punkt als Dezimalzeichen.
Bei manueller Ausführung müssen die Formeln jedoch landestypisch geschrieben sein.
In deinem Fall mit den einfachen Rechenformeln macht das keinen unterschied.
Per VBA könntest auch noch die Umwandlung mit
Selection.Formular = Selection.Value
machen. Das würde sogar funktionieren, wenn noch die Erzeugerformeln vorliegen und spart einen Schritt. Hierbei könnte man auch arbeiten, wenn die Formeln in " deutsch " erzeugt wurden, dann mit
Selection.FormulaLocal = Selection.Value
Gruß Daniel
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zelle aktivieren und "Enter" in Excel nutzen


Schritt-für-Schritt-Anleitung

Um in Excel Zellen zu aktivieren und "Enter" zu bestätigen, kannst Du den folgenden VBA-Code verwenden. Dieser Code aktiviert jede Zelle in der Auswahl und simuliert das Drücken der "Enter"-Taste.

Sub F2_Enter()
    Dim C As Range
    For Each C In Selection
        Application.SendKeys "{F2}"
        Application.SendKeys "{Enter}"
    Next C
End Sub

Anleitung:

  1. Öffne den VBA-Editor in Excel mit ALT + F11.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinDateiname)", dann "Einfügen" > "Modul".
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und kehre zu deinem Excel-Blatt zurück.
  5. Wähle die Zellen aus, die Du aktivieren möchtest.
  6. Führe das Makro F2_Enter aus.

Häufige Fehler und Lösungen

  • Fehler: Der Code funktioniert nicht, wenn er aus dem VBA-Editor gestartet wird.

    • Lösung: Starte das Makro direkt aus dem Excel-Arbeitsblatt, nachdem Du die Zellen ausgewählt hast.
  • Fehler: SendKeys scheint nicht zu funktionieren.

    • Lösung: SendKeys kann manchmal unzuverlässig sein. Stelle sicher, dass Excel im Vordergrund ist, während das Makro ausgeführt wird.

Alternative Methoden

  1. Verwendung von .FormulaLocal: Statt die Zellen über SendKeys zu aktivieren, kannst Du die Formel direkt zuweisen, indem Du .FormulaLocal verwendest:

    Sub SetFormula()
       Range("A1").FormulaLocal = "=A2+A3"
    End Sub
  2. Ersetzen-Funktion: Du kannst die Funktion "Ersetzen" verwenden, um das "=" in den Zellen zu ersetzen. Dies funktioniert wie eine Neueingabe und aktiviert die Zellen:

    Columns(1).Replace What:="=", Replacement:="=", LookAt:=xlPart

Praktische Beispiele

  • Beispiel 1: Um alle Zellen in einer bestimmten Spalte mit einer Formel zu füllen, könntest Du den folgenden Code verwenden:

    Sub FillFormulas()
        Dim r As Range
        Set r = Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp))
        r.FormulaLocal = "=SUM(B:B)"
    End Sub
  • Beispiel 2: Zellen aktivieren und in eine Zahl umwandeln:

    Sub ConvertToNumber()
        Dim Zelle As Range
        For Each Zelle In Selection
            Zelle.Value = Zelle.Value
        Next Zelle
    End Sub

Tipps für Profis

  • Nutze .FormulaLocal, um sicherzustellen, dass die Formeln in der richtigen Sprache eingegeben werden, besonders wenn Du mit mehreren Excel-Versionen arbeitest.
  • Vermeide die Verwendung von SendKeys, da es zu unerwarteten Ergebnissen führen kann, vor allem, wenn andere Programme aktiv sind.
  • Teste Deine Makros immer in einer Kopie der Datei, um unbeabsichtigte Änderungen zu vermeiden.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen .Value und .FormulaLocal?
.Value speichert nur den Wert der Zelle, während .FormulaLocal die Formel selbst speichert, die Excel zur Berechnung verwendet.

2. Warum funktioniert SendKeys manchmal nicht?
SendKeys sendet Tasteneingaben an das aktive Fenster. Wenn Excel nicht im Vordergrund ist oder andere Prozesse laufen, kann es zu Problemen kommen.

3. Kann ich den Code für mehrere Zellen gleichzeitig verwenden?
Ja, der bereitgestellte Code funktioniert für jede Zelle in der Auswahl. Stelle sicher, dass Du die Zellen vor dem Ausführen des Makros ausgewählt hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige