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

VBA wenn;dann; sonnst Wert vom Vortag

VBA wenn;dann; sonnst Wert vom Vortag
08.01.2017 14:29:34
Becker
Hallo Zusammen,
Hat jemand von euch eine VBA Lössung für mich?
Folgendes Szenario
Wenn in Tabelle 1 das Datum sich am nächsten Tag aktualiesiert springen die
werte F8:F12 Tabelle1 auch in der Tabelle2 in die Spalte mit gleichem Datum wie Tabelle1 ist ja auch richtig,
aber gibt es eine möglichkeit das die werte des Vortages erhalten bleiben?
hier ist die Datei.
https://www.herber.de/bbs/user/110400.xlsx
Gruß Andreas

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA wenn;dann; sonnst Wert vom Vortag
08.01.2017 15:43:50
Fennek
Hallo,
m.K.n. geht dies nur mit vba: mit dem event "before_save" kann man die Formeln durch die Werte ersetzen.
mfg
AW: dazu angemerkt ...
08.01.2017 16:43:06
...
Hallo Fennek,
... in einem andern thread hatte ich Andreas schon mitgeteilt, dass dies nur mit VBA geht, ich mich aber aus VBA grundsätzlich heraus halte. Dein Hinweis wird Andreas wohl kaum weiterhelfen, wenn ich auf dem von ihm angegebenen Level schaue.
Gruß Werner
.. , - ...
AW: VBA wenn;dann; sonnst Wert vom Vortag
08.01.2017 17:04:18
Daniel
Hi
naja, diese Lösung ist etwas unglücklich.
ich würde die Spalte F ganz weglassen und die Werte direkt in die rechte Tabelle eintragen.
die Spalte mit dem aktuellen Datum kannst du ja über die Bedingte Formatierung gesondert hervorheben, damit man weiß wo man eintragen muss.
Gruß Daniel
Anzeige
AW: ähnlichen Hinweis hatte ich schon gegeben owT
08.01.2017 17:07:24
...
Gruß Werner
.. , - ...
AW: ... und zwar im thread ...
08.01.2017 17:35:43
Daniel
Hi Werner
naja, vielleicht wirkt es ja überzeugender, wenn er von mehreren Antwortern die gleiche Antwort bekommt.
ansonsten, liest du immer jeden neuen Beitrag?
(und wo wir schon beim lesen sind, angesichts deiner Anrede, wer soll sich überhaupt angesprochen fühlen?)
Gruß Daniel
AW: da kann ich nur schreiben ...
08.01.2017 18:03:09
...
Hallo Daniel,
... sorry, für die falsche Anrede. Wenn ich mich recht erinnere, ist es nun schon zumindest zum zweiten Mal, dass ich Dich mit einem unzutreffenden Vornamen angesprochen habe. Es geschah jedenfalls stets ohne Absicht.
Gruß Werner
.. , - ...
Anzeige
AW: bin etwas weiter gekommen
08.01.2017 19:07:13
Becker
hallo leute,
funktioniert aber nur mit Zahlen,
Private Sub Worksheet_Calculate()
Dim objCell As Range
If Date > "05.01.2017" Then         'Datum nach Wunsch anpassen
For Each objCell In Range("J7:N12")
If objCell.HasFormula Then _
If IsNumeric(objCell.Text) Then _
If Fix(objCell.Value) = objCell.Value Then _
objCell.Value = objCell.Value
Next
End If
End Sub
habe isNumeric durch IsText zu ersätzen versucht bekomme leider eine Fehlermeldung.
wo ist der Fehler?
AW: bin etwas weiter gekommen
08.01.2017 19:30:09
Daniel
Hi
ungünstiger Ansatz.
Schau dir mal meine andere Lösung an.
dort wird beim Ausfüllen der Spalte F der Wert parallel in die entsprechende Zeile und Spalte der Tabelle2 eingetragen. Damit brauchst du keine Formeln mehr.
Gruß Daniel
Anzeige
AW: ... und zwar im thread ...
08.01.2017 18:00:34
Becker
Hallo Leute,
das mit dem direkt in die Tabelle2 eintragen wäre natürlich sinnvoller nur,nicht jeder soll zugriff darauf haben es sind vertrauliche informationen darin welche nicht jeder erfahren soll wie Adressen Tel.Nr.usw.
wir haben in der Abteilung um die 120 MA,5 davon machen die Anwesenheitslisten und der Leiter muss dann manuel die einträge in die Dattenbank eintragen.
Dachte da mir EXCEL sowieso viel spass macht und ich gerne was neues lehrne probiere ich es zu machen.
So sollte es ungefer sein,hier der link
https://www.herber.de/bbs/user/110410.xlsx
Menü war für die bereichsleiter gedacht wo die ihre Anwesendheit machen können und die eingaben Automatisch in die Abteilung Automatisch übertragen werden.
Nun ja habe mich wohl überschätzt.
Gruß Andreas
Anzeige
AW: ... und zwar im thread ...
08.01.2017 18:14:45
Daniel
HI
mit diesem Code werden die Änderungen in Spalte F automatisch in die Tablle2 übertragen.
die Spalte berechnet sich aus der Differnz vom aktuellem Datum zum ersten Datum der Tabelle2
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Spalte As Long
Dim Zelle As Range
If Intersect(Target, Range("F8:F1000")) Is Nothing Then Exit Sub
Spalte = 10 + Range("F7").Value - Range("J7").Value
If Spalte 
Gruß Daniel
AW: ... und zwar im thread ...
08.01.2017 19:27:32
Becker
Hallo Daniel,
Danke für deine mühe,
ich kriege die Code aber nicht zum laufen,
also rechtsklick - Code anzeigen-Code eingefügt, beim ausführen kommt eine meldung ich soll ein makro erstellen.was mache ich falsch?
Gruß Andreas
Anzeige
AW: ... und zwar im thread ...
08.01.2017 19:35:36
Daniel
Hi
richtiges Modul erwischt?
der Code muss ins Modul des Tabellenblatts, wo das ganze passieren soll, also Modul Tablle1
wenn du das Modul im Projetkexplorer auswählen willst, musst du einen Doppeltklick auf den Zweig machen.
direkt zum Modul kommst du, wenn du den Rechtsklick auf den Registerreiter des Tabellenblatts machsts und dort "Code anzeigen" auswählen.
Gruß Daniel
AW: ... und zwar im thread ...
08.01.2017 19:42:56
Becker
@Daniel,
kannst du mir bitte noch verraten was ich im Code noch ergenzen muss damit werte von Tabellenblatt 1 auf Tabellenblatt 2 übertragen werden.
Gruß Andreas
AW: ... und zwar im thread ...
08.01.2017 19:52:47
Daniel
Hi
vor jedem Zellbezug (Range, Cellsd), der auf dem zweiten Tabellenblatt liegt, musst du diesen Tabllenblattnamen hinschreiben.
am besten nimmst du den Namen, der im ProjektExplorer VOR der Klammer steht:
also Tabelle2.Range("J7") und Tabelle2.Cells(Zelle.Row, Spalte)
vor Zellbezügen, die auf dem Blatt liegen zu dem der Code gehört, brauchst du nichts hinschreiben.
Gruß Daniel
Anzeige
AW: ... und zwar im thread ...
08.01.2017 19:31:48
Becker
Daniel Sorry,
es Funktioniert!!! Ich liebe EXCEL
Vielen Dank!
Gruß Andreas
AW: es ist fast perfekt ...
09.01.2017 07:14:24
Becker
Hallo Zusammen ,
Hallo Daniel,
...aber ,ich habe in Tabelle1 5 Bereiche wo Werte eingegeben werden Bereich1" I8:I30"
Bereich2 "M8:M30" ,Bereich3 "Q8:Q30" ;Bereich4 "U8:30" ,Bereich5 "Y8:Y30" ,neben einander stehen.
In Tabelle2 wochin die Werte übertragen werden, sind auch 5 Bereiche nur unter einander
nun zum Problem, wenn ich in Tabelle1 Bereich1 "I8:I30" was eingebe wird es ja auch in Tabelle2
übertragen! Frage kann man den Code ergenzen damit die Werte auch von den anderen vier Bereichen
übertragen werden übertragen werden?
Gruß Andreas
Anzeige
AW: es ist fast perfekt ...
09.01.2017 08:48:14
Daniel
Hi
wenn man gewusst hätte, dass es so ist, hätte man den Code auch gleich so schreiben können.
jetzt musst du dir ihn entsprechen ergänzen.
Ich kann mich, wenn ich einen Code schreiben, nur nach den Informationen richten die mir gegeben werden.
Gruß Daniel
AW: es ist fast perfekt ...
09.01.2017 09:48:44
Becker
Sorry Daniel,ist mir erst Heute in der Arbeit eingefahlen bzw. aufgefahlen.
kannst du mir Bitte sagen wo ich ansätzen muss bzw. wonach ich suchen muss?
Gruß Andreas
AW: es ist fast perfekt ...
09.01.2017 10:04:44
Daniel
Hi
du musst aus dem
If Intersect(Target, Range("F8:F1000")) Is Nothing Then Exit Sub

einen echten IF-Block machen, dh ohne Exit Sub, aber mit End IF:
If Not Intersect(Target, Range("F8:F1000")) Is Nothing Then
Spalte = 10 + Range("F7").Value - Range("J7").Value
If Spalte 
und dann diesen Block für jeden Zellbereich mit seinen Spezifischen Daten wiederholen.
Gruß Daniel
Anzeige
AW: es ist fast perfekt ...
10.01.2017 08:12:08
Becker
Hallo Zusammen,
so habe ich es gemacht
If Not Intersect(Target, Range("M8:M30")) Is Nothing Then
Spalte = 10 + Range("C4").Value - Tabelle2.Range("J7").Value
If Spalte < 10 Then Exit Sub
Application.EnableEvents = False
For Each Zelle In Intersect(Target, Range("M8:M30"))
Tabelle2.Cells(Zelle.Row, Spalte).Offset(23, 0) = Zelle.Value
Next
Application.EnableEvents = True
End If
ist doch richtig,oder?
Danke an alle ihr seit spitze.
Gruß Andreas
AW: ... und zwar im thread ...
14.01.2017 14:22:15
Becker
Hallo Zusammen,
Hallo Werner,
kannst du mir bitte sagen warum die Formel (vom anderem Tread) =WENNFEHLER(INDEX(Tabelle2!B$8:B$50;KGRÖSSTE(INDEX((INDEX(Tabelle2!J$8:PV$50;;VERGLEICH(HEUTE();J$5:PV$5;))="K")*ZEILE(B$8:B$50)-12;);ZEILE(B1)));"")
nicht in anderer Arbeitsmappe funktioniert?
Bereiche habe ich natürlich geändert die werden aber nicht Farblich in der Formel?
Gruß Andreas
Anzeige

357 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige