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

Forumthread: Werte abhängig von einem Datum eintragen VBA

Werte abhängig von einem Datum eintragen VBA
04.11.2016 13:43:00
einem
Hi zusammen,
ich habe wieder ein Problem mit einem Kalender. In diesem Fall ist das aber ein bisschen anders als bisher. Ich hoffe ihr könnt mir auch diesmal wieder helfen!
Ich habe zwei Tabellenblätter (Details, Kalender). Im Blatt Details werden die Termine eingetragen und in das Blatt Kalender übertragen.
Im Blatt Kalender berechne ich nun 3 Informationen aus dem Von und Bis Datum des Eintrags.
Spalte F = Zeile in die der Eintrag stehen soll
Spalte G = Erste Spalte des Datums für den Kalendereintrag
Spalte H = Letzte Spalte des Datums für den Kalendereintrag
Ich möchte nun gerne, dass der Status aus Spalte C in die entsprechenden Felder übertragen werden sobald man ein Makro über eine Schaltfläche im Blatt Details ausführt.
Es kann insgesamt bis zu 1000 Einträge geben.
Hier noch das File. Ich denke es damit einfacher es zu verstehen. Ich musste es Zippen, da es größer als 300kb ist und damit zu groß um es hoch zu laden.
https://www.herber.de/bbs/user/109203.zip
Ich danke euch im Voraus für eure Hilfe!
LG
Martin
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte abhängig von einem Datum eintragen VBA
04.11.2016 16:42:11
einem
Hallo Martin,
evtl. so:
Sub Eintragen()
Dim intStatus As Integer
Dim vonCol As Integer
Dim bisCol As Integer
Dim intZeile As Long
Dim lastRow As Long
Dim i As Long
lastRow = Worksheets("Details").Cells(Rows.Count, 3).End(xlUp).Row
Application.ScreenUpdating = False
With Worksheets("Kalender")
.Range("AB15:BGB134").ClearContents
For i = 2 To lastRow
intStatus = .Range("C" & i)
intZeile = .Range("F" & i)
vonCol = .Range("G" & i)
bisCol = .Range("H" & i)
.Range(.Cells(intZeile, vonCol), .Cells(intZeile, bisCol)).Value = intStatus
Next i
End With
End Sub
Gruß
Klaus
Anzeige
AW: Perfekt! Danke!
07.11.2016 08:36:34
Martin
Hi Klaus!
Perfekt! Vielen vielen Dank!!!
lg
Martin
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte abhängig von einem Datum in Excel eintragen mit VBA


Schritt-für-Schritt-Anleitung

Um Werte abhängig von einem Datum in Excel einzutragen, kannst du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne dein Excel-Dokument und gehe zu dem Blatt, in dem du die Daten eingeben möchtest (in diesem Fall "Details").

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

  3. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (dein Dokument)" klickst und "Einfügen" > "Modul" wählst.

  4. Kopiere den folgenden Code in das Modul:

    Sub Eintragen()
       Dim intStatus As Integer
       Dim vonCol As Integer
       Dim bisCol As Integer
       Dim intZeile As Long
       Dim lastRow As Long
       Dim i As Long
       lastRow = Worksheets("Details").Cells(Rows.Count, 3).End(xlUp).Row
       Application.ScreenUpdating = False
       With Worksheets("Kalender")
           .Range("AB15:BGB134").ClearContents
           For i = 2 To lastRow
               intStatus = .Range("C" & i)
               intZeile = .Range("F" & i)
               vonCol = .Range("G" & i)
               bisCol = .Range("H" & i)
               .Range(.Cells(intZeile, vonCol), .Cells(intZeile, bisCol)).Value = intStatus
           Next i
       End With
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu deinem Excel-Dokument.

  6. Füge eine Schaltfläche ein (über "Entwicklertools" > "Einfügen" > "Schaltfläche") und verlinke sie mit dem gerade erstellten Makro Eintragen.

  7. Klicke auf die Schaltfläche, um die Daten in das Blatt "Kalender" zu übertragen.


Häufige Fehler und Lösungen

  • Fehler: "Betriebssystem nicht ausreichend"
    Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Makroeinstellungen und aktiviere die Makros.

  • Fehler: Daten werden nicht übertragen
    Lösung: Überprüfe, ob die Spalten C, F, G und H im Blatt "Details" korrekt ausgefüllt sind und ob die Zellverweise im Code mit deinen Spalten übereinstimmen.


Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch Formeln nutzen, um Daten abhängig von Datumsangaben zu berechnen. Zum Beispiel könntest du die WENN-Funktion verwenden, um den Status in einer Hilfsspalte zu bestimmen, bevor du die Daten manuell überträgst.


Praktische Beispiele

Angenommen, du hast folgende Daten im Blatt "Details":

C (Status) F (Zeile) G (Von) H (Bis)
1 15 1 3
2 16 1 2

Nach Ausführung des Makros wird das Blatt "Kalender" die Werte in den entsprechenden Zeilen und Spalten füllen.


Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Ausführung des Makros zu deaktivieren. Das beschleunigt die Ausführung erheblich.
  • Füge Error-Handling in deinen Code ein, um mögliche Laufzeitfehler elegant zu behandeln.
  • Experimentiere mit benutzerdefinierten Funktionen, um spezifische Berechnungen durchzuführen, bevor du die Daten überträgst.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehr Spalten zu berücksichtigen?
Du kannst einfach weitere Variablen für die zusätzlichen Spalten deklarieren und die Schleife entsprechend anpassen.

2. Ist dieses Verfahren auch in Excel Online verfügbar?
Nein, die Verwendung von VBA ist nur in der Desktop-Version von Excel möglich. In Excel Online kannst du keine Makros ausführen.

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