Automatischer Eintrag von Formel



Excel-Version: Ab 8.0
nach unten

Betrifft: Automatischer Eintrag von Formel
von: Lela Sommer
Geschrieben am: 23.06.2002 - 18:05:37

Hallo!
Im Archiv habe ich von Werner B. vom 12.6.2002 folgendes sehr
nützliches Makro gefunden. Es trägt in Spalte B u. C erst bei
Eintrag in Spalte A die Formel ein. Das hilft eine Datei, die
über mehrere Tausend Zeilen wächst, klein zu halten. Leider
markiert der Cursor mir die jeweiligen Zellen in B und C und läßt
sich mit "Enter" auch nicht weiterschalten. Kann das daran
liegen, daß es für Excel 10 geschrieben wurde?
Meine Frage: Was müßte ich verändern, um es an Version 8 bzw. 9 anzupassen?
Wäre für Hilfe sehr dankbar.

Hier das Makro:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column > 1 Then Exit Sub
If Not IsEmpty(Target) Then
Range("B1:C1").Copy
Range("B" & Target.Row).PasteSpecial Paste:=xlFormulas, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End If
End Sub

Liebe Grüsse aus Wien
Lela Sommer




nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Hajo_Zi
Geschrieben am: 23.06.2002 - 18:12:14

Hallo Lela

ändere den Code wie folgt


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column > 1 Then Exit Sub
    If Not IsEmpty(Target) Then Range("B1:C1").Copy Destination:=Range("B" & Target.Row)
End Sub


Gruß Hajo

nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Lela Sommer
Geschrieben am: 23.06.2002 - 18:54:29

Hallo Hajo!
Vorerst vielen Dank, dass du für mich eine Sonntagsschicht
eingelegt und mir geholfen hast. Änderung eingebaut - klappt bestens. Ich stehe jetzt nur vor einem Problem: wenn ich auf einem Sheet schon ein Makro habe, das mit:"Private Sub Worksheet_Change(ByVal....)" beginnt, kriege ich eine Fehlermeldung: "Mehrdeutiger Name..." Habe es dann versucht, in ein Modul einzubauen, da läuft es nicht. Arbeitsmappe ist auch schon mit Makros belegt. Mit diesem Problem kämpfe ich schon länger, konnte aber immer irgendwie ausweichen. Wäre für einen Lösungsvorschlag dankbar - eilt aber überhaupt nicht.

Nochmals liebe Grüsse
Lela Sommer

nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Hajo_Zi
Geschrieben am: 23.06.2002 - 18:57:07

Hallo Lela

Hilfreich wäre es schon, wenn Du den Code des zweiten Makros ins Forum stellen könntst, dann ist die Lösung einfacher

Gruß Hajo


nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Lela Sommer
Geschrieben am: 23.06.2002 - 19:13:28

Hallo Hajo!
Sorry, ich dachte es genügt der Beginn des Codes.

Makro 1:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 3 Then Cells(Target.Row, 6).Value = Now
End Sub

Makro 2: (das ich nach deiner Anweisung geändert habe)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column > 1 Then Exit Sub
If Not IsEmpty(Target) Then Range("B1:C1").Copy Destination:=Range("B" & Target.Row)
End Sub

Zum zweiten Makro ist noch eine Frage aufgetaucht, an deren Lösung ich erst selbst experimentieren muß - ich frage erst, wenn ich es(als VBA-Null) nicht schaffe. Ich habe auch Angst, die Hilfsbereitschaft zu sehr auf die Probe zu stellen.

Liebe Grüsse
Lela Sommer

nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Lela Sommer
Geschrieben am: 23.06.2002 - 19:19:37

Hallo Hajo!
Sorry, ich dachte es genügt der Beginn des Codes.

Makro 1:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 3 Then Cells(Target.Row, 6).Value = Now
End Sub

Makro 2: (das ich nach deiner Anweisung geändert habe)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column > 1 Then Exit Sub
If Not IsEmpty(Target) Then Range("B1:C1").Copy Destination:=Range("B" & Target.Row)
End Sub

Zum zweiten Makro ist noch eine Frage aufgetaucht, an deren Lösung ich erst selbst experimentieren muß - ich frage erst, wenn ich es(als VBA-Null) nicht schaffe. Ich habe auch Angst, die Hilfsbereitschaft zu sehr auf die Probe zu stellen.

Liebe Grüsse
Lela Sommer

nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Hajo_Zi
Geschrieben am: 23.06.2002 - 19:25:52

Hallo Lela

ich habe Befehle eingebaut damit der Abschnitt nur einmal durchlaufen wird. Auf den Befehl Exit Sub habe ich verzichtet, da dadurch der Befehl Application.EnableEvents = True nicht mehr ausgeführt wird. Diese Befehl schaltet wieder ein, das auf Eingaben reagiert werden. soll.


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Application.EnableEvents = False
    If Target.Column = 3 Then Cells(Target.Row, 6).Value = Now
    If Target.Column = 1 Then
        If Not IsEmpty(Target) Then Range("B1:C1").Copy Destination:=Range("B" & Target.Row)
    End If
    Application.EnableEvents = True
End Sub

zu
"Zum zweiten Makro ist noch eine Frage aufgetaucht, an deren Lösung ich erst selbst experimentieren muß - ich frage erst, wenn ich es(als VBA-Null) nicht schaffe. Ich habe auch Angst, die Hilfsbereitschaft zu sehr auf die Probe zu stellen."

Zum Helfen sind doch die Foren da. Aber Versuche es, dadurch lernt man ja auch einiges.

Gruß Hajo

nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Lela Sommer
Geschrieben am: 23.06.2002 - 20:27:36

Hallo Hajo!
Danke! funktoniert :-) und ich wollte auf die Anwendung schon verzichten.
Bei ähnlich gelagerten Fällen werde ich das versuchen, das anzuwenden. Zur vorher "angedrohten" Frage: Ich kriegs einfach nicht hin. Die ursprünglich nach deinen Anweisungen abgewandelte Formel (Makro 2 im vorherigen Posting) wollte ich weiter abwandeln und zwar so:
In Spalte I und F stehen jeweils ein Datum. In Spalte P steht die Formel =WENN(I2>0;(I2-F2);""). Es soll die Differenz errechnet werden.
Ich habe herumgedoktert und den Code versucht abzuwandeln - es gelingt mir nicht. Das letzte Ergebnis das dabei herausgekommen ist schicke ich mit, damit du was zum Schmunzeln hast ;-) Es macht eigenartige Dinge.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column > 16 Then Exit Sub
If Not IsEmpty(Target) Then Range("E1:I1").Copy Destination:=Range("H" & Target.Row)
End Sub

Liebe Grüsse
Lela Sommer

nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Hajo_Zi
Geschrieben am: 23.06.2002 - 20:32:14

Hallo Lela

ich wollte jetzt nicht mehr die Datei erstellen, darum mal ein Schuß ins Blaue


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Application.EnableEvents = False
    If Target.Column = 3 Then Cells(Target.Row, 6).Value = Now
    If Target.Column = 1 Then
        If Not IsEmpty(Target) Then Range("B1:C1").Copy Destination:=Range("B" & Target.Row)
    End If
    If Target.Column <= 16 Then
        If Not IsEmpty(Target) Then Range("E1:I1").Copy Destination:=Range("H" & Target.Row)
    End If
    Application.EnableEvents = True
End Sub

Gruß Hajo

nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Hajo_Zi
Geschrieben am: 24.06.2002 - 07:17:10

Hallo Lela

Du mußt noch mal genauer erklären was wann koppiert werden soll.
Die splate F wird eigentlich ausgefüülte wenn in Spalte C was geschrieben wird aber ndersrum soll der Bereich E bis i kopiert werden, wenn was in Spalte <=16 geschrieben wird, da wird Spalte F ja wieder überschrieben Die Formel in Spalte P wird nirgens kopiert.

Der Bereich E1 bis I1 wird in Spalte H der aktuellen Zeile kopiert ist dies richtig???

Gruß Hajo


nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Lela Sommer
Geschrieben am: 24.06.2002 - 07:49:45

Hallo Hajo!

Sorry, ich glaube, es ist die Hitze: mir ist mit den Spaltenangaben ein Fehler passiert. Ich war auch nicht so 100%ig genau mit den Angaben, weil ich dachte, dass ich es ohnehin für mich abwandeln kann - leider kann ich es nicht und es läuft nicht - Deshalb hier nochmals die Vorgaben:
Was soll es können:

1.) Wenn in A etwas eingetragen wird soll die Formel in C1 in den darunterliegenden Zeilen fortgesetzt u. berechnet werden
2.) Wenn in D eine Eintragung erfolgt sollte automatisch in F das Datum der Eintragung geschrieben werden
3.) Bei einer Eintragung in H sollte in I das heutige Datum eingetragen werden (in Wirklichkeit verschwindet aber diese Eintragung)

Wichtig wäre auch zu wissen, welchen Parameter ich verändern muß, um eine andere Spalte anzusprechen - denn das könnte ich dann auch für andere Tabellen verwenden.
Hoffe, ich habe mich verständlich genug ausgedrückt und du verzeihst mir den Fehler im vorangegenen Posting. Hab ein schlechtes Gewissen, weil du dich umsonst bemüht hast.

Liebe Grüsse
Lela Sommer

nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Mathias
Geschrieben am: 24.06.2002 - 08:22:34

NA !!!
Gleichen Thema wie am 21.6.2002 ?????
Datum und Uhrzeit ........von Lela Sommer

nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Hajo_Zi
Geschrieben am: 24.06.2002 - 08:59:12

Hallo Lela

hier auch noch mal der Code damit der Beitrag geschlossen ist.


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Application.EnableEvents = False    ' Reaktion auf Eingabe abschalten auch durch Programm
    If Target.Column = 1 And Not IsEmpty(Target) Then
        Range("B1:C1").Copy Destination:=Range("B" & Target.Row)
    ElseIf Target.Column = 4 Then
        Cells(Target.Row, 6) = Date     ' nicht Now da ja nur das Datum, Now ist einschl. Uhrzeit
    ElseIf Target.Column = 8 Then       ' entspricht Spalte H
        Cells(Target.Row, 9) = Date
    End If
    Application.EnableEvents = True
End Sub

Gruß Hajo

nach oben   nach unten

Re: Automatischer Eintrag von Formel
von: Lela Sommer
Geschrieben am: 24.06.2002 - 11:56:55

Hallo Hajo!
Jetzt funktioniert es. Danke für deine Mühe und Geduld.

Und an Mathias: es ist nicht das selbe.

Liebe Grüsse
Lela Sommer

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Automatischer Eintrag von Formel"