Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahlenformat übernehmen F2 + Enter, VBA

Zahlenformat übernehmen F2 + Enter, VBA
27.08.2018 16:47:42
Kailash
Hallo!
Habe eine Tabelle wo das Zahlenformat (Datum) nicht übernommen wird.
Die Spalte ist als Datum formatiert, wenn die Daten (die als Text vorliegen) dann in diese Spalte kommen (mit VBA), dann wird es trotzdem als Text angezeigt, nicht als Datum.
Dann muss man mit F2 rein und Enter drücken.
Oder mit Text in Spalte.
Weil ich aber die Datei regelmässig aktualisiere, will ich das nicht händisch machen, sondern will das auch automatisieren.
Habe Makros aufgenommen, die funktionieren aber beim Aufruf nicht, dh. keine Fehlermeldung, aber es passiert nix.
Auch ein Makro für das Senden von F2 funktioniert nicht.
Sub F2Senden()
Dim zelle2 As Object
Tabelle1.Range("A1:A30").Select
For Each zelle2 In Selection
SendKeys "{F2}", True
SendKeys "{ENTER}", True
Next zelle2
End Sub

Sub SpaltezuText()
' SpaltezuText Makro
Columns("A").Select
Columns("A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
End Sub
Weiss jemand warum das nicht funktioniert?
Hänge eine Beispieldatei dran mit allen Makros, die ich probiert habe.
https://www.herber.de/bbs/user/123596.xlsm
Viele Grüsse
Kailash
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlenformat übernehmen F2 + Enter, VBA
27.08.2018 16:51:05
Matthias
Hallo
Probier mal:
with Tabelle1.Range("A1:A30")
if isnumeric(.value) then .value = .value * 1
end with
nicht getestet!
Gruß Matthias
AW: Zahlenformat übernehmen F2 + Enter, VBA
27.08.2018 17:02:46
{Boris}
Hi,
kopiere eine LEERE Zelle, markiere die Datümer, Inhalte einfügen - ADDIEREN - fertig.
Kannst Du auch mit dem Recorder aufzeichnen.
VG, Boris
Anzeige
AW: Zahlenformat übernehmen F2 + Enter, VBA
27.08.2018 21:32:09
Kailash
Hallo!
Der Vorschlag mit Addieren funktioniert. ABER wenn ich das mit dem Makro Recorder aufnehme und dann aufrufe, dann wird zwar die Farbe der Zelle übernommen, aber nicht das Zahlenformat.
Das mit multiplizieren ging gar nicht.
Ausserdem müssten die Makros die ich gepostet habe auch funktionieren.
Warum tun sie das nicht?
Viele Grüsse
Kailash
Anzeige
AW: Zahlenformat übernehmen F2 + Enter, VBA
28.08.2018 08:18:29
hary
Moin
Probier mal so. Man kann auch den Bereich "A1:A30" in einem Rutsch formatieren. Hier macht der Code es Zelle fuer Zelle.
Dim zelle As Range
For Each zelle In Range("A1:A30")
If IsDate(zelle) Then
zelle.NumberFormat = "DD.MMM"
zelle = DateValue(zelle)
End If
Next

gruss hary
Anzeige
AW: Zahlenformat übernehmen F2 + Enter, VBA
28.08.2018 08:37:12
Kailash
Moin Harry!
Ja, das funktioniert. Wie macht man es "in einem Rutsch"? Erst in ein Array einlesen oder hattest du da ne andere Idee?
Viele Grüsse
Kailash
AW: Zahlenformat übernehmen F2 + Enter, VBA
28.08.2018 08:57:50
hary
Moin
In einem Rutsch geht nur das Formatieren. Das umwandeln muss Zelle fuer Zelle gemacht werden(soweit ich weiss).
Dim Bereich As Range, Zelle As Range
Set Bereich = Tabelle1.Range("A1:A30")
Bereich.NumberFormat = "DD.MMM"
For Each Zelle In Bereich
If IsDate(Zelle) Then Zelle = DateValue(Zelle)
Next

gruss hary
Anzeige
AW: Zahlenformat übernehmen F2 + Enter, VBA
28.08.2018 10:08:11
Kailash
Moin Hary!
Damit kann ich gut leben.
Herzlichen Dank!
Viele Grüsse
Kailash
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zahlenformat in Excel automatisieren mit F2 und VBA


Schritt-für-Schritt-Anleitung

Um das Zahlenformat in Excel automatisch zu übernehmen, kannst Du das folgende VBA-Skript verwenden. Dieses Skript durchläuft eine bestimmte Spalte und verwendet die SendKeys-Methode, um die F2-Taste und anschließend Enter zu simulieren.

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

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul").

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

    Sub F2Senden()
       Dim zelle2 As Object
       Tabelle1.Range("A1:A30").Select
       For Each zelle2 In Selection
           SendKeys "{F2}", True
           SendKeys "{ENTER}", True
       Next zelle2
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus.

Wenn Du das Format für alle Zellen in einer Spalte übernehmen möchtest, kannst Du das Makro für die gesamte Spalte anpassen, indem Du Columns("A").Select verwendest.


Häufige Fehler und Lösungen

  • F2 enter excel funktioniert nicht: Wenn das Makro nicht das gewünschte Ergebnis erzielt, überprüfe, ob die Zellen tatsächlich als Text formatiert sind. Manchmal funktioniert das F2-Kommando nicht wie erwartet, wenn die Zellen nicht korrekt ausgewählt sind.

  • Excel Formel funktioniert erst nach Enter: Vergewissere Dich, dass die Daten vorher als Datum formatiert sind. Andernfalls kann es sein, dass Excel die Konvertierung nicht automatisch durchführt.

  • SendKeys funktioniert nicht: SendKeys kann manchmal unzuverlässig sein, insbesondere wenn andere Anwendungen im Vordergrund sind. Stelle sicher, dass Excel aktiv ist, während das Makro ausgeführt wird.


Alternative Methoden

Wenn Du das Zahlenformat nicht über F2 und SendKeys übernehmen möchtest, gibt es auch andere Möglichkeiten:

  • Text in Spalte: Du kannst die TextToColumns-Methode verwenden, um Text in Datum zu konvertieren. Beispiel:

    Sub SpaltezuText()
       Columns("A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
       TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
       Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
       :=Array(1, 1), TrailingMinusNumbers:=True
    End Sub
  • Direkte Datenkonvertierung: Du kannst auch direkt mit VBA das Format für mehrere Zellen anpassen, wie im folgenden Beispiel:

    Dim Bereich As Range, Zelle As Range
    Set Bereich = Tabelle1.Range("A1:A30")
    Bereich.NumberFormat = "DD.MMM"
    For Each Zelle In Bereich
       If IsDate(Zelle) Then Zelle = DateValue(Zelle)
    Next

Praktische Beispiele

Angenommen, Du hast eine Liste von Datumsangaben in Textform in Spalte A. Um diese in das Datumsformat zu konvertieren, kannst Du das folgende Makro verwenden:

Sub KonvertiereTextZuDatum()
    Dim zelle As Range
    For Each zelle In Tabelle1.Range("A1:A30")
        If IsDate(zelle.Value) Then
            zelle.Value = CDate(zelle.Value)
        End If
    Next zelle
End Sub

Tipps für Profis

  • Makros automatisieren: Du kannst das Makro mit einer Schaltfläche verknüpfen, um die Ausführung zu erleichtern.

  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass Dein Makro auch bei unerwarteten Eingaben funktioniert.

  • Verwendung von Arrays: Wenn Du große Datenmengen bearbeitest, kann es hilfreich sein, die Daten in ein Array zu lesen, bevor Du sie bearbeitest. Dies kann die Leistung verbessern.


FAQ: Häufige Fragen

1. Warum funktioniert das F2 + Enter Makro nicht?
SendKeys kann unzuverlässig sein. Stelle sicher, dass Excel das aktive Fenster ist, wenn Du das Makro ausführst.

2. Gibt es eine Möglichkeit, das Zahlenformat ohne VBA zu ändern?
Ja, Du kannst die Funktion "Text in Spalten" verwenden, um Textdaten in das richtige Format zu konvertieren.

3. Wie kann ich das Format für die gesamte Spalte übernehmen?
Ändere die Auswahl im Makro von Range("A1:A30") auf Columns("A"), um die gesamte Spalte zu berücksichtigen.

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