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

Forumthread: Makro Wenn Zelle nicht leer dann Formel einfügen

Makro Wenn Zelle nicht leer dann Formel einfügen
14.06.2013 11:32:06
Brockmann
Hallo an alle,
habe mal wieder ein Problem.
Ich habe eine Exceltabelle in der ich per Makro Daten aus einer Text-Datei einlesen. Jetzt möchte nach dem importieren der Daten ein Makro ausführen können welches mir ab der Zeile 12 in den Spalten E und F folgende Formel einfügt
Für Spalte E: =F12/(Stundenverrechnungssatz!$E$4/60)/60
für Splate F: J12-H12-G12
wenn in der gleichen Zeile die Spalte A nicht leer ist.
Das Tabellenblatt hat den Namen "Blatt 223"
Vielleicht kann mir ja jemand von euch weiter helfen.
Vielen Dank.

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Makro Wenn Zelle nicht leer dann Formel einfügen1
14.06.2013 11:41:41
Hajo_Zi

Option Explicit
Sub Formel()
Dim LoLetzte As Long
Dim LoI As Long
With Worksheets("Blatt 223")
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
.Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
For LoI = 1 To LoLetzte
If .Cells(LoI, 1)  "" Then
.Cells(LoI, 5).Formula = "=F12/(Stundenverrechnungssatz!$E$4/60)/60"
.Cells(LoI, 6).Formula = "=J12-H12-G12"
End If
Next LoI
End With
End Sub

Anzeige
AW: Makro Wenn Zelle nicht leer dann Formel einfügen1
14.06.2013 11:54:28
Brockmann
Hallo Hajo_Zi,
wow für die Express-Antwort erstmal vielen Dank.
Zwei Dinge sind mir beim Test aufgefallen.
1. Er beginnt bereits in der 1. Zeile mit dem Einsetzen der Formel, sollte es aber erst ab Zeile 12 tun.
2. Bei der Formel habe ich einen Fehler gemacht. Denn es soll nicht in jeder Zeile die gleiche Formel eingesetzt werden sonder passend zu jeder Zeile.
Zeile 12 wäre die Formel: =F12/(Stundenverrechnungssatz!$E$4/60)/60 und J12-H12-G12
Zeile 13 wäre die Formel: =F13/(Stundenverrechnungssatz!$E$4/60)/60 und J13-H13-G13
Zeile 14 wäre die Formel: =F14/(Stundenverrechnungssatz!$E$4/60)/60 und J14-H14-G14
.
.
.
Kannst du das noch einfließen lassen.
Vielen Dank.
Gruß David

Anzeige
Makro Wenn Zelle nicht leer dann Formel einfügen2
14.06.2013 11:59:52
Hajo_Zi
Hallo David,
Option Explicit
Sub Formel()
Dim LoLetzte As Long
Dim LoI As Long
With Worksheets("Blatt 223")
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
.Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
For LoI = 12 To LoLetzte
If .Cells(LoI, 1)  "" Then
.Cells(LoI, 5).Formula = "=F" & LoI & "/(Stundenverrechnungssatz!$E$4/60)/60"
.Cells(LoI, 6).Formula = "=J" & LoI & "-H" & LoI & "-G" & LoI
End If
Next LoI
End With
End Sub
Gruß Hajo

Anzeige
AW: Makro Wenn Zelle nicht leer dann Formel einfügen2
14.06.2013 12:03:47
Brockmann
Funktioniert prima.
Vielen Dank und schönes Wochenende!
Gruß David
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro für Excel: Formel einfügen, wenn Zelle nicht leer


Schritt-für-Schritt-Anleitung

Um ein Makro in Excel zu erstellen, das eine Formel in den Zellen einfügt, sobald eine benachbarte Zelle nicht leer ist, folge diesen Schritten:

  1. Öffne Excel und gehe zu deinem Arbeitsblatt (in diesem Fall "Blatt 223").

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  4. Kopiere und füge den folgenden VBA-Code ein:

    Option Explicit
    Sub Formel()
       Dim LoLetzte As Long
       Dim LoI As Long
       With Worksheets("Blatt 223")
           LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
                          .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
           For LoI = 12 To LoLetzte
               If .Cells(LoI, 1) <> "" Then
                   .Cells(LoI, 5).Formula = "=F" & LoI & "/(Stundenverrechnungssatz!$E$4/60)/60"
                   .Cells(LoI, 6).Formula = "=J" & LoI & "-H" & LoI & "-G" & LoI
               End If
           Next LoI
       End With
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Dieses Makro prüft, ob die Zelle in Spalte A nicht leer ist, und fügt die entsprechenden Formeln in die Spalten E und F ein.


Häufige Fehler und Lösungen

  • Problem: Das Makro beginnt in der ersten Zeile statt in der Zeile 12.

    • Lösung: Stelle sicher, dass die Schleife bei For LoI = 12 To LoLetzte beginnt.
  • Problem: Formeln werden nicht korrekt an die jeweilige Zeile angepasst.

    • Lösung: Verwende LoI in den Formeln, um die Zeilennummer dynamisch zu verwenden, wie im obigen Beispiel.
  • Problem: Die Excel-Formel wird nicht ausgeführt.

    • Lösung: Stelle sicher, dass die Zelle in Spalte A nicht leer ist, da die Formel nur unter dieser Bedingung eingefügt wird.

Alternative Methoden

Eine alternative Methode ist die Verwendung von Excel-Formeln, anstatt ein Makro zu schreiben. Du könntest in Zelle E12 folgende Formel verwenden:

=IF(A12<>"", F12/(Stundenverrechnungssatz!$E$4/60)/60, "")

Und in Zelle F12:

=IF(A12<>"", J12-H12-G12, "")

Kopiere diese Formeln dann nach unten. Diese Methode erfordert kein VBA, ist aber weniger flexibel, wenn du viele Zeilen hast.


Praktische Beispiele

Hier ist ein Beispiel, wie die Formeln aussehen würden:

  • In Zelle E12: =IF(A12<>"", F12/(Stundenverrechnungssatz!$E$4/60)/60, "")
  • In Zelle F12: =IF(A12<>"", J12-H12-G12, "")

Wenn in A12 ein Wert steht, wird die Formel in E12 ausgeführt. Wenn nicht, bleibt die Zelle leer.


Tipps für Profis

  • Verwende Option Explicit am Anfang deines VBA-Codes, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Nutze die Application.ScreenUpdating = False und Application.ScreenUpdating = True Befehle, um das Flackern des Bildschirms während des Makro-Laufs zu reduzieren.
  • Du kannst auch eine Bedingung hinzufügen, um die Ausführung zu stoppen, wenn ein bestimmtes Kriterium nicht erfüllt ist, z.B. wenn die Tabelle leer ist.

FAQ: Häufige Fragen

1. Wie prüfe ich in VBA, ob eine Zelle nicht leer ist?
Du kannst dies mit der Bedingung If .Cells(LoI, 1) <> "" Then machen.

2. Warum wird meine Formel nicht eingefügt?
Stelle sicher, dass die Bedingung für das Einfügen der Formel korrekt ist. Die Zelle, die du überprüfst, muss nicht leer sein.

3. Kann ich das Makro auf andere Tabellen anwenden?
Ja, du kannst den Tabellennamen in Worksheets("Blatt 223") anpassen, um das Makro auf andere Blätter anzuwenden.

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