Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

spezielle "doppelte" Zellenprogrammierung

spezielle "doppelte" Zellenprogrammierung
18.03.2007 21:28:47
Lenhard
Moin Moin!
Ist es möglich Excel-Zellen in einer Spalte so zu programmieren, dass man sie zum Beispiel mit einem Datum via einem VBA-Skript über ein UserForm primär ausfüllt...
...man jedoch danach jederzeit ein anderes Datum in die Zelle eingeben kann (sekundär)...
...und wenn mann dann das sekundäre Datum einfach wieder löscht, dann erscheint einfach wieder das primäre Datum (...das über das VBA-Skript eingegebene) wieder.
-----------------------------------------
Oder anders: In einer Zelle steht eine Formel "irgendwie im Hintergrund", die sich ein Datum aus einer anderen Zelle holt. Dieses Datum kann ich aber einfach mit einem anderen Datum überschreiben. Wenn ich dann dieses wieder lösche, dann wirkt die "Hintergrundformel" wieder, und es erscheint wieder das Datum aus einer anderen Zelle.
Ist das Möglich?
Gruß aus dem zur Zeit sehr windigen hohen Norden!
Lenhard

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Probier mal ...
18.03.2007 21:52:00
Matthias
Hi,
Option Explicit
Sub DatumEintragen()
Cells(2, 1) = Date
Cells(2, 2) = Date
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Cells(2, 2)) Is Nothing Then
If Cells(2, 2) = "" Then Cells(2, 2) = Cells(2, 1).Value
End If
End Sub
Gruß Matthias
AW: Probier mal ...
18.03.2007 23:59:00
Lenhard
Moin Matthias!
Vielen Dank! ...ich habe mir Deinen Vorschlag angesehen und ich glaube ihn zu verstehen...
Aber wie beziehe ich Deine 2 Skripts auf Zellen in einem Arbeitsblatt? Zum Beispiel "B3:B67".
Kannst Du mir das bitte veranschaulichen?! Vielen Dank im Voraus!
Gruß
Lenhard
Anzeige
?
19.03.2007 20:11:29
Matthias
Hallo Lenhard
Du musst das genauer erklären, was Du damit meist.
... aber wie beziehe ich Deine 2 Skripts auf Zellen in einem Arbeitsblatt? Zum Beispiel "B3:B67".
In meinem Beispiel wird das Datum in A2 & B2 eingetragen.
Änderst Du jetzt das Datum in B2 bleibt das Datum erhalten.
löschst Du das Datum in B2 wird das Datum aus A2 zurückgeschrieben,
Userbild
Gruß Matthias
AW: ?
19.03.2007 22:05:00
Lenhard
Ohh sorry Matthias! ...ich habe Deinen erneuten Beitrag beinahe übersehen. Ich werde mal in die nähere Versuchphase gehen...
Ich melde mich dann noch mal! Aber erst mal: Vielen vielen Dank!
Gruß
Lenhar
Anzeige
AW: ?
19.03.2007 22:48:00
Lenhard
Hallo Matthias!
Ich habe gerade Dein Skript getestet und ich glaube es funktioniert! Ich habe nur Schwierigkeiten diese Prozedur über eine Spalte umzusetzen (z.B. Die Eingabe aus A1 soll übernommen werden über die Spalte B1:B10).
Du merkst schon an meiner Schreibe: Ich bin es gewohnt in "Range" (A1:A7) zu denken, weniger in der Z1S1-Bezugsart, welches wohl so ein wenig in Deine Richtung "Cells(2, 2)" geht. Meine Versuche enden in einer "Sackgasse" bzw. in "Sackgassen"!
Kann man Dein Skript über mehrere Zellen einer Spalte zu Anwendung bringen? Vielen Dank im Voraus!
Gruß
Lenhard
Anzeige
AW: ?
20.03.2007 18:28:00
Lenhard
Hallo Matthias!
Ich habe mich mit Deinem Skript nun etwas genauer befaßt. Da ich ja einen Wert aus einer Zelle in mehrere Zellen untereinander in einer Spalte benötige ist mir folgendes dazu eingefallen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Cells(1, 1)) Is Nothing Then
If Cells(1, 1) = "" Then Cells(1, 1) = Cells(1, 2).Value
If Cells(2, 1) = "" Then Cells(2, 1) = Cells(1, 2).Value
If Cells(3, 1) = "" Then Cells(3, 1) = Cells(1, 2).Value
End If
End Sub
In Zelle B1 steht mein fixes Datum, welches nun in die Zellen A1:A3 übernommen wird, wenn sie leer sind.
Einzelne Zellen aus dem Bereich A1:A3 kann ich nun nach belieben ändern. Nehme ich die geänderten Werte wieder raus, wird das Datum aus B1 einfach wieder zurück geschrieben.
Ich möchte mich als erstes bei Dir bedanken, denn das ist die Lösung!!
Nur: Sind meine Ergänzungen eine elegante Lösung? ...oder gibt es da nicht eine kürzere Schreibe?!? Denn ich brauche das über mindestens 40 Zeilen. Das wird ja ganz schön groß!!
Hast Du noch eine Idee?
Gruß
Lenhard
Anzeige
neuer Versuch :-)
22.03.2007 16:36:00
Matthias
Hallo Lenhard.
Sorry, das ich es erst heute gelesen habe.
Diese Prozedur über 40 Zeilen
(A1:A40)
Das geht mit einer Schleife.
Option Explicit
Dim j As Byte

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Cells(1, 1)) Is Nothing Then
For j = 1 To 40
If Cells(j, 1) = "" Then Cells(j, 1) = Cells(1, 2).Value
Next
End If
End Sub
Ich hoffe, ich habe Dich richtig verstanden.
Gruß Matthias
AW: spezielle "doppelte" Zellenprogrammierung
19.03.2007 00:53:00
Daniel
Hallo
wenn du 2 Zellen verwenden kannst, geht auch folgende, VBA freie lösung:
Zelle 1: Eingabezelle (hier A1)
Zelle 2: Ergebniszelle (hier B1) mit folgender Formel: =WENN(A1"";A1;WERT("5.1.2007"))
wenn in A1 ein Wert drinsteht, wird dieser auch in B1 angezeit.
ist A1 leer, wird der Standardwert verwendet, der in der Formel hinterlegt ist.
Gruß, Daniel
Anzeige
AW: spezielle "doppelte" Zellenprogrammierung
19.03.2007 18:02:00
Lenhard
Moin Moin noch mal Ihr Zwei!
Nicht das Ihr denkt ich habe Euch vergessen. Ich experimentiere noch, auch mit Euren Ideen.
Aber noch mal zu Dir Daniel. Ich habe Deine Ausführungen als Versuch getestet. Ich glaube Dein Ansatz ist mit ein richtiger Weg, aber er haut nicht so hin wie gedacht.
Also in der Zelle A1 soll automatisch ein Datum stehen, welches ich in einer anderen Zelle hinterlegt habe (z.B. B1).
Ich möchte aber auch die Möglichkeit haben, in der Zelle A1 dieses Datum mit einem anderen zu überschreiben. Wenn ich dann dieses wieder rausnehme, die Zelle also quasi leer mache, dann erscheint wieder das in der Zelle B1 hinterlegte automatisch.
Ist das verständlich?!?
Gruß
Lenhard
Anzeige
AW: spezielle "doppelte" Zellenprogrammierung
19.03.2007 20:15:14
Daniel
Hallo
wenn man nur mit Formeln arbeitet, dh. ohne Makros, dann kann in einer Zelle nur entweder eine Formel oder ein von Hand eingetragener Wert stehen, daher mein ansatz mit der Eingabe- und Ergebniszelle
in der Ergebniszelle wird, wenn die Eingabezelle leer ist, der Defaultwert angezeigt, ansonsten der Wert aus der Eingabezelle.
sollte das nicht möglich sein und Eingabe- und Ergebniszelle sollen miteinander verschmelzen, dann geht das nur über ein kleines Makro:

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Not Intersect(Target, Range("A1")) Is Nothing
Case True
If Target.Value = "" Then Target.Value = Range("B1").Value
Case False
End Select
End Sub
dieses Makro muß in das Modul der betroffenen Arbeitsmappe reinkopiert werden.
derzeit gilt es nur für die von dir beschriebenen Zellen A1 (eingabe) und B1 (default-Wert)
das Makro geht aber erst, wenn in der Zelle A1 auch tatsächlich was geändert wird, zu Beginn bleibt die Zelle noch leer.
Gruß, Daniel
Anzeige
AW: spezielle "doppelte" Zellenprogrammierung
19.03.2007 21:59:00
Lenhard
Ja Danke Daniel! ...das war ein gewaltiger Schritt in meine gedachte Richtung!
Das funktioniert ja im Prinzip, nur Schade das der hinterlegte Wert in B1 erst dann in A1 erscheint, wenn man etwas in A1 ändert oder einfach nur 1x die "Entf"-Taste drückt und dann A1 verläßt.
Wenn der in B1 hinterlegte Wert sofort in A1 erscheinen würde und dann die Funktionalität weiter so bleibt wie durch Dein Makro geregelt, dann wäre das die Lösung meines Problems!
Hast Du da noch Ideen? ...und natürlich mache ich mir selber auch noch Gedanken.
Vielen Dank! Gruß
Lenhard
AW: spezielle "doppelte" Zellenprogrammierung
19.03.2007 22:16:28
Daniel
Hallo
dann vielleicht noch diese Ergänzung:

Private Sub Worksheet_Change(ByVal Target As Range)
if target.address= "$B$1" then range("A1").value = range("B1").value
Select Case Not Intersect(Target, Range("A1")) Is Nothing
Case True
If Target.Value = "" Then Target.Value = Range("B1").Value
Case False
End Select
End Sub
sobald du jetzt den Wert in B1 änderst, wird er auch in A1 eingetragen.
Gruß, Daniel
Anzeige
AW: spezielle "doppelte" Zellenprogrammierung
19.03.2007 23:20:00
Lenhard
Ja! ...das funktioniert! Ich versuche das nur noch über eine Spalte umzusetzen: Also ein fester Wert in der Zelle B1 soll über die Spalte A1:A10 übernommen werden ohne die nachträgliche bisher gewünschte Funktionalität zu verlieren. Meine Versuche führen immer zu Fehlermeldungen... ...?!
Hast Du da noch den entscheidenden Hinweis? Vielen Dank im Voraus!
Gruß
Lenhard
AW: spezielle "doppelte" Zellenprogrammierung
20.03.2007 21:33:00
Daniel
Hallo
für mehrere Zellen in A gehts so:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$B$1" Then Range("A1:A10").Value = Range("B1").Value
Select Case Not Intersect(Target, Range("A1:A10")) Is Nothing
Case True
If Target(1).Value = "" Then Target.Value = Range("B1").Value
Case False
End Select
Application.EnableEvents = True
End Sub
Wenn du Fehlermeldungen hast, solltest du auch deinen Code dazu Posten, sonst können dir dabei nicht helfen.
Gruß, Daniel
Anzeige
AW: spezielle "doppelte" Zellenprogrammierung
20.03.2007 22:53:00
Lenhard
Moin Daniel!
Das funktioniert!! Vielen Dank!!
Keine Fehlermeldungen! Ein schöner, kurzer Code. Ich werde mir mal die Unterschiede in allen Deinen Vorschlägen noch mal genauer ansehen! ...und hoffentlich viel lernen! Das hat ja was mit "If" zu "Then" also "Wenn" zu "Dann" zu tun... Ich schau mal!
Viele Grüße aus dem hohen Norden
Lenhard
PS ...auch an Dich, Matthias, noch mals vielen herzlichen Dank! Bei Euch beiden trifft der alte Spruch zu: Viele Wege nach Rom!
AW: spezielle "doppelte" Zellenprogrammierung
20.03.2007 18:43:04
Lenhard
Moin Daniel!
Ich wollte mich noch mal ganz herzlich bei Dir für Deine Hilfe bedanken! Du hast sicherlich mitgekriegt, das Matthias auch eine Lösung angeboten hatte. Diese konnte ich durch "Versuch und Irrtum" (...und natürlich auch mit Logik) auf mehrere Zellen in einer Spalte erweitern. Mit Deiner Lösung ist mir das leider nicht gelungen, was aber nicht heißt, dass sie schlecht ist oder das es nicht geht*. Nein, sie ist zumindestens für eine Zelle echt klasse!!! ...ich schüttel so was nicht so einfach aus dem Handgelenk! Alle Achtung!!
Vielen Dank noch mal!!
Gruß
Lenhard
* Wenn es eine Lösung gibt, würde ich mich sehr freuen, wenn Du es hier trotzdem noch mal voten könntest. Es hilft ja auch zahlreichen anderen im Forum.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige