Supportnet / Forum / Tabellenkalkulation
Hilfe mei Makro
Frage
Liebe Excelfreunde,
Ich habe gehört, dass ich ein Makro brauche, kenne mich damit aber nicht aus.
"Ich möchte inZelle c4 an fünf Tagen pro Woche einen Betrag eingeben."
Ich habe in der Datumsspalte b schon die zwei nicht relevanten Wochentage extrahiert, zb Wochende, so sieht sie aus: [b7: hier gebe ich ein beliebiges Datum ein, das auf einen Montag fällt, b8=b7+1, b9=b8+1, b10=b9+1, b11=b10+1, b12=b7+7, b13=b8+7, b14=b9+7, b15=b10+7, etc etc, für 10 Jahre].
Gibt es dafür, dass eine Eingabe in Zelle c4 immer in Spalte c beim richtigen Datum aus Spalte b eingetragen wird, eine Lösung via Formel? Falls nein, kann mir jemand mit Kurzanleitung zur Selbsthilfe darstellen, wie ich ein Makro dafür erstelle/kopiere?
Stelle die Datei unter gerne netupload.de ein.
Freue mich über jeden Beitrag!
Gruß Kutschi
Antwort 1 von Saarbauer
Hallo,
leider nicht verständlich was du vorhast
Gruß
Helmut
leider nicht verständlich was du vorhast
Gruß
Helmut
Antwort 2 von Kutschi
Hallo Helmut,
danke ertmal dafür, dass Du es Dir ansiehst.
Spalte A Spalte B Spalte C
Zeile1
Zeile2
Zeile3
Zeile4 tägliche Eingabe in C4
Zeile5
Zeile6
Zeile7 z.B. 20.11.06
Zeile8 =B7+1
Zeile9 =B8+1
Zeile10 =B9+1
Zeile11 =B10+1
Zeile12 =B7+7
Zeile 13 =B8+7
Zeile 14 =B9+7
etc etc
Wenn ich z.B. heute, 28.11.2006, in die Zelle C4 etwas eintrage, soll es in Zelle C13 geschrieben werden, neben das heutige Datum aus Spalte B.
Hoffentlich habe ich mich jetzt etwas verständlicher ausgedrückt.
Viele liebe Grüße
Kutschi
danke ertmal dafür, dass Du es Dir ansiehst.
Spalte A Spalte B Spalte C
Zeile1
Zeile2
Zeile3
Zeile4 tägliche Eingabe in C4
Zeile5
Zeile6
Zeile7 z.B. 20.11.06
Zeile8 =B7+1
Zeile9 =B8+1
Zeile10 =B9+1
Zeile11 =B10+1
Zeile12 =B7+7
Zeile 13 =B8+7
Zeile 14 =B9+7
etc etc
Wenn ich z.B. heute, 28.11.2006, in die Zelle C4 etwas eintrage, soll es in Zelle C13 geschrieben werden, neben das heutige Datum aus Spalte B.
Hoffentlich habe ich mich jetzt etwas verständlicher ausgedrückt.
Viele liebe Grüße
Kutschi
Antwort 3 von Kutschi
ups, da ist wohl was verrutscht.
________Spalte A ________Spalte B_______ Spalte C
Zeile1
Zeile2
Zeile3
Zeile4 __________________________tägliche Eingabe in C4
Zeile5
Zeile6
Zeile7 _________________z.B. 20.11.06
Zeile8 ___________________=B7+1
Zeile9 ___________________=B8+1
Zeile10 __________________=B9+1
Zeile11 __________________=B10+1
Zeile12 __________________=B7+7
Zeile 13 __________________=B8+7
Zeile 14 __________________=B9+7
Zeile n___________________(=Bn-5)+7
________Spalte A ________Spalte B_______ Spalte C
Zeile1
Zeile2
Zeile3
Zeile4 __________________________tägliche Eingabe in C4
Zeile5
Zeile6
Zeile7 _________________z.B. 20.11.06
Zeile8 ___________________=B7+1
Zeile9 ___________________=B8+1
Zeile10 __________________=B9+1
Zeile11 __________________=B10+1
Zeile12 __________________=B7+7
Zeile 13 __________________=B8+7
Zeile 14 __________________=B9+7
Zeile n___________________(=Bn-5)+7
Antwort 4 von Saarbauer
Hallo,
wenn ich es richtig verstehe wilst du jeden Tag deine Eingabe in Feld C4 machen und die soll dann hinter den jeweiligen Datum in Spalte C stehen und wahrscheinlich morgen auch noch da stehen.
Das geht nur mit VBA.
Gruß
Helmut
wenn ich es richtig verstehe wilst du jeden Tag deine Eingabe in Feld C4 machen und die soll dann hinter den jeweiligen Datum in Spalte C stehen und wahrscheinlich morgen auch noch da stehen.
Das geht nur mit VBA.
Gruß
Helmut
Antwort 5 von Kutschi
Hallo Helmut,
im Keller brennt Licht, ich habs aber schon ausgemacht!
Kutschi
im Keller brennt Licht, ich habs aber schon ausgemacht!
Kutschi
Antwort 6 von Saarbauer
Hallo,
versteh ich zwar nicht ganz, aber vermute, dass dir das jetzt auch eingefallen ist.
Gruß
Helmut
versteh ich zwar nicht ganz, aber vermute, dass dir das jetzt auch eingefallen ist.
Gruß
Helmut
Antwort 7 von Kutschi
Mensch Helme,
wer lesen kann, ist klar im Vorteil. Sieh Dir doch noch mal meine erste Frage an:
"Ich habe gehört, dass ich ein Makro brauche, kenne mich damit aber nicht aus."
Mal abgesehen von Deinem Verständnisproblem antwortest Du sinngemäß: "Ich habe zwar Deine Frage verstanden, kann Dir aber nicht helfen."
Sinn des Forums und mein Anliegen war aber, eine verwertbare Antwort zu erhalten und keine Unwissenheitsbekundung.
Kutschi
wer lesen kann, ist klar im Vorteil. Sieh Dir doch noch mal meine erste Frage an:
"Ich habe gehört, dass ich ein Makro brauche, kenne mich damit aber nicht aus."
Mal abgesehen von Deinem Verständnisproblem antwortest Du sinngemäß: "Ich habe zwar Deine Frage verstanden, kann Dir aber nicht helfen."
Sinn des Forums und mein Anliegen war aber, eine verwertbare Antwort zu erhalten und keine Unwissenheitsbekundung.
Kutschi
Antwort 8 von Saarbauer
Hallo,
seh mal hier nach AW 3
müsste bei dir in etwa passen.
Gruß
Helmut
seh mal hier nach AW 3
müsste bei dir in etwa passen.
Gruß
Helmut
Antwort 9 von Saarbauer
Antwort 10 von Saarbauer
hallo,
was ähnliches, wäre für deine Zwecke umbaubar.
https://supportnet.de/threads/1463560
und den Link nutzen.
Will mich nicht mit fremden Federn schmücken
Gruß
Helmut
was ähnliches, wäre für deine Zwecke umbaubar.
https://supportnet.de/threads/1463560
und den Link nutzen.
Will mich nicht mit fremden Federn schmücken
Gruß
Helmut
Antwort 11 von Kutschi
Danke, dass Du Dich nochmal reingehängt hast.
Dein erster Link trifft die Sache fast: Das Makro ist nicht ans Datum gekoppelt. Dein zweiter Link beschäftigt sich mit Sortiervorgängen.
Trotzdem danke, ein Kollege will sich dafür mal Zeit nehmen.
Gruß Kutschi
Dein erster Link trifft die Sache fast: Das Makro ist nicht ans Datum gekoppelt. Dein zweiter Link beschäftigt sich mit Sortiervorgängen.
Trotzdem danke, ein Kollege will sich dafür mal Zeit nehmen.
Gruß Kutschi
Antwort 12 von Saarbauer
Hallo,
das mit dem zweiten Link ist richtig, aber es soll sofort nach Eintragung sortiert werden und nicht erst zum Schluss, daher kann man aus diesem Ablauf durch entsprechenden Umbau deine Funktion erreichen.
Gruß
Helmut
das mit dem zweiten Link ist richtig, aber es soll sofort nach Eintragung sortiert werden und nicht erst zum Schluss, daher kann man aus diesem Ablauf durch entsprechenden Umbau deine Funktion erreichen.
Gruß
Helmut
Antwort 13 von Kutschi
Offensichtlich habe ich Glück, dass ich Makro-Neulingin bin. Mich würde schon interessieren, an welcher Stelle man die Anweisung wie abändern muss, um meine Frage bzw. Deine Formulierung in Antwort 4 zu erfüllen. Hier die Anweisungen aus den drei Tabellenblättern Deines zweiten Links:
Tabelle 1:
Private Sub Worksheet_Change(ByVal Target As Range)
´**************************************************
´* H. Ziplies *
´* 04.09.05 *
´* erstellt von Hajo.Ziplies@web.de *
´* http://Hajo-Excel.de/ *
´**************************************************
´ automatisch sortieren bei Eingabe im Bereich F1:F34
Dim RaZelle As Range
For Each RaZelle In Range(Target.Address)
If RaZelle.Column = 6 Then
ActiveSheet.UsedRange.Sort Key1:=Range("F1"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Exit For ´ Schleife verlasse da schon sortiert
End If
Next RaZelle
End Sub
Tabelle 2:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
´**************************************************
´* H. Ziplies *
´* 04.09.05 *
´* erstellt von Hajo.Ziplies@web.de *
´* http://Hajo-Excel.de/ *
´**************************************************
Dim RaZelle As Range
´ ActiveSheet.Unprotect
For Each RaZelle In Range(Target.Address)
´ überprüfen ob Zelle im vorgegebenen Bereich
If RaZelle.Column = 7 Or RaZelle.Column = 2 Then
´ Sortieren
ActiveSheet.UsedRange.Sort Key1:=Range("G1"), Order1:=xlDescending, Key2:=Range("B1") _
, Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Exit For ´ Schleife verlasse da schon sortiert.
End If
Next RaZelle
´ ActiveSheet.Protect
End Sub
Tabelle 3:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
´**************************************************
´* H. Ziplies *
´* 04.09.05 *
´* erstellt von Hajo.Ziplies@web.de *
´* http://Hajo-Excel.de/ *
´**************************************************
Dim RaZelle As Range
´ ActiveSheet.Unprotect
For Each RaZelle In Range(Target.Address)
´ überprüfen ob Zelle im vorgegebenen Bereich
If RaZelle.Column = 4 Or RaZelle.Column = 5 Then
´ Sortieren
ActiveSheet.Range("C7:E23").Sort Key1:=Range("D7"), Order1:=xlDescending, Key2:=Range("E7") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Exit For ´ Schleife verlasse da schon sortiert.
End If
Next RaZelle
´ ActiveSheet.Protect
End Sub
Gruß Kutschi
Tabelle 1:
Private Sub Worksheet_Change(ByVal Target As Range)
´**************************************************
´* H. Ziplies *
´* 04.09.05 *
´* erstellt von Hajo.Ziplies@web.de *
´* http://Hajo-Excel.de/ *
´**************************************************
´ automatisch sortieren bei Eingabe im Bereich F1:F34
Dim RaZelle As Range
For Each RaZelle In Range(Target.Address)
If RaZelle.Column = 6 Then
ActiveSheet.UsedRange.Sort Key1:=Range("F1"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Exit For ´ Schleife verlasse da schon sortiert
End If
Next RaZelle
End Sub
Tabelle 2:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
´**************************************************
´* H. Ziplies *
´* 04.09.05 *
´* erstellt von Hajo.Ziplies@web.de *
´* http://Hajo-Excel.de/ *
´**************************************************
Dim RaZelle As Range
´ ActiveSheet.Unprotect
For Each RaZelle In Range(Target.Address)
´ überprüfen ob Zelle im vorgegebenen Bereich
If RaZelle.Column = 7 Or RaZelle.Column = 2 Then
´ Sortieren
ActiveSheet.UsedRange.Sort Key1:=Range("G1"), Order1:=xlDescending, Key2:=Range("B1") _
, Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Exit For ´ Schleife verlasse da schon sortiert.
End If
Next RaZelle
´ ActiveSheet.Protect
End Sub
Tabelle 3:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
´**************************************************
´* H. Ziplies *
´* 04.09.05 *
´* erstellt von Hajo.Ziplies@web.de *
´* http://Hajo-Excel.de/ *
´**************************************************
Dim RaZelle As Range
´ ActiveSheet.Unprotect
For Each RaZelle In Range(Target.Address)
´ überprüfen ob Zelle im vorgegebenen Bereich
If RaZelle.Column = 4 Or RaZelle.Column = 5 Then
´ Sortieren
ActiveSheet.Range("C7:E23").Sort Key1:=Range("D7"), Order1:=xlDescending, Key2:=Range("E7") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Exit For ´ Schleife verlasse da schon sortiert.
End If
Next RaZelle
´ ActiveSheet.Protect
End Sub
Gruß Kutschi
Antwort 14 von coros
Hallo Kutschi,
kopiere nachfolgendes Makro in das VBA-Projekt des Tabellenblattes, in dem Du die Eingabe in C4 machen möchtest.
Bei jeder Eingabe in Zelle C4 wird der Wert aus Zelle C4 in die Zeile, in der das Datum, das bei der Eingabe das aktuelle Datum war, steht, in Spalte C eingetragen.
Ich hoffe, Du meintest das so. Bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
kopiere nachfolgendes Makro in das VBA-Projekt des Tabellenblattes, in dem Du die Eingabe in C4 machen möchtest.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Target.Address = "$C$4" Then
For i = 1 To Range("B65536").End(xlUp).Row
If Format(Cells(i, 2), "dd.mm.yyyy") = Format(Now, "dd.mm.yyyy") Then
Cells(i, 3) = Range("C4")
Exit For
End If
Next
End If
End SubBei jeder Eingabe in Zelle C4 wird der Wert aus Zelle C4 in die Zeile, in der das Datum, das bei der Eingabe das aktuelle Datum war, steht, in Spalte C eingetragen.
Ich hoffe, Du meintest das so. Bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 15 von Kutschi
Suuuuuuuuper Oliver!
et is am klappen. Danke Danke Danke
Jetzt nur noch eine (hoffentlich) Kleinigkeit. ich würde gerne in d4 und e4 die gleiche funktion schalten, eintrag entsprechend in den spalten d und e.
Habe es natürlich erstmal selbst versucht (für zelle f4):
Private Sub Worksheet_Change_2(ByVal Target As Range)
Dim k As Long
If Target.Address = "$f$4" Then
For k = 1 To Range("B65536").End(xlUp).Row
If Format(Cells(k, 2), "dd.mm.yyyy") = Format(Now, "dd.mm.yyyy") Then
Cells(k, 6) = Range("f4")
Exit For
End If
Next
End If
End Sub
Ich bekomme zwar keine Fehlermeldung, aber es passiert auch nichts. Wenn das einfach zu beheben ist, dann melde Dich doch bitte noch mal.
Viele Grüße
Kutschi
et is am klappen. Danke Danke Danke
Jetzt nur noch eine (hoffentlich) Kleinigkeit. ich würde gerne in d4 und e4 die gleiche funktion schalten, eintrag entsprechend in den spalten d und e.
Habe es natürlich erstmal selbst versucht (für zelle f4):
Private Sub Worksheet_Change_2(ByVal Target As Range)
Dim k As Long
If Target.Address = "$f$4" Then
For k = 1 To Range("B65536").End(xlUp).Row
If Format(Cells(k, 2), "dd.mm.yyyy") = Format(Now, "dd.mm.yyyy") Then
Cells(k, 6) = Range("f4")
Exit For
End If
Next
End If
End Sub
Ich bekomme zwar keine Fehlermeldung, aber es passiert auch nichts. Wenn das einfach zu beheben ist, dann melde Dich doch bitte noch mal.
Viele Grüße
Kutschi
Antwort 16 von coros
HAllo Kutschi,
nachfolgend der Code, den Du bitte wieder in das VBA-Projekt des Tabellenblattes kopieren solltest, in dem Du die Eingaben machen möchtest.
Wenn Du das für weitere Zellen machen möchtest, dann füge das vor der Zeile End Sub ein. Erstelle nicht wie in Deinem Beispiel ein neues Worksheet_Change-Ereignis mit z.B. dem namen Worksheet_Change_2. Das geht nicht. Dann hattest Du einen Fehler in der Zeile
Dort dürfen keine Buchstaben angegeben werden, sondern nur die Spaltenindexzahlen. Wie man das genau macht, kannst Du auf meiner HP in der Rubrik VBA- Befehle unter der Cells-Eigenschaft nach. Dort habe ich das beschrieben.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nachfolgend der Code, den Du bitte wieder in das VBA-Projekt des Tabellenblattes kopieren solltest, in dem Du die Eingaben machen möchtest.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Target.Address = "$C$4" Then
For i = 1 To Range("B65536").End(xlUp).Row
If Format(Cells(i, 2), "dd.mm.yyyy") = Format(Now, "dd.mm.yyyy") Then
Cells(i, 3) = Range("C4")
Exit For
End If
Next
End If
If Target.Address = "$D$4" Then
For i = 1 To Range("B65536").End(xlUp).Row
If Format(Cells(i, 2), "dd.mm.yyyy") = Format(Now, "dd.mm.yyyy") Then
Cells(i, 4) = Range("D4")
Exit For
End If
Next
End If
If Target.Address = "$E$4" Then
For i = 1 To Range("B65536").End(xlUp).Row
If Format(Cells(i, 2), "dd.mm.yyyy") = Format(Now, "dd.mm.yyyy") Then
Cells(i, 5) = Range("E4")
Exit For
End If
Next
End If
End SubWenn Du das für weitere Zellen machen möchtest, dann füge das vor der Zeile End Sub ein. Erstelle nicht wie in Deinem Beispiel ein neues Worksheet_Change-Ereignis mit z.B. dem namen Worksheet_Change_2. Das geht nicht. Dann hattest Du einen Fehler in der Zeile
Cells(k, 6) = Range("f4")Dort dürfen keine Buchstaben angegeben werden, sondern nur die Spaltenindexzahlen. Wie man das genau macht, kannst Du auf meiner HP in der Rubrik VBA- Befehle unter der Cells-Eigenschaft nach. Dort habe ich das beschrieben.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 17 von Kutschi
Daaaaaaaaanke!
Werde mich dann mal die nächste Zeit auf deiner hp umsehen, um mich in diese Geschichten einzuarbeiten!
Gruß und ein schönes Wochenende!
Kutschi
Werde mich dann mal die nächste Zeit auf deiner hp umsehen, um mich in diese Geschichten einzuarbeiten!
Gruß und ein schönes Wochenende!
Kutschi

