[excel]Marker setzen

Dieses Thema [excel]Marker setzen im Forum "Microsoft Office Suite" wurde erstellt von PCDjoe, 5. Jan. 2007.

Thema: [excel]Marker setzen Ola, ich hab mal wieder Bedarf an einem kleinen Makro. Ich schreibe eine lange Excel Tabelle nach unten weiter....

  1. Ola,

    ich hab mal wieder Bedarf an einem kleinen Makro.
    Ich schreibe eine lange Excel Tabelle nach unten weiter. Der Eintrag erfolgt immer am Ende in Spalte B. Immer wenn dort etwas eingegeben wird, soll die Formel in Spalte C aus der Zelle oben drüber in die Zelle der Zeile eingefügt werden. DAs ist aber nur für den Komfort und nicht gar so wichtig.

    Das eigentliche Anliegen ist die Spalte D: Wenn der Inhalt einer bestehenden Zelle (Also kein ersteintrag, die Zelle ist also vorher nicht leer und steht nicht in der neu hinzukommenden Zeile) geändert wird, soll in der Zelle daneben (spalte E) das aktuelle Datum erscheinen.

    Ich hatte schon angefangen ... aber dann aufgegeben wegen ständiger Unterbrechung ;)
     
  2. Hallo PCDjoe

    Zu D ändern in E das Datum:Teste einmal folgendes Makro im betroffenen Tabellenblatt.

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
         Dim RaBereich As Range, RaZelle As Range
         Set RaBereich = Range(D:D)->Bereich anpassen
         Application.EnableEvents = False
         For Each RaZelle In Range(Target.Address)
               If Not Intersect(RaZelle, RaBereich) Is Nothing Then RaZelle.Offset(0, 1) = Date
               Columns(E).EntireColumn.AutoFit->Spalte E auf Optimale Breite einstellen
         Next RaZelle
         Application.EnableEvents = True
         Set RaBereich = Nothing
    End Sub

    Edit:
    Sorry PCDjoe

    Makro schreibt bei Änderung einer Zelle der Spalte D immer daneben in E der gleichen Zeile das aktuelle Datum, war ich wohl zu schnell.

    Hilft dir auch folgende Änderung im Makro weiter?

    Statt:

          If Not Intersect(RaZelle, RaBereich) Is Nothing Then RaZelle.Offset(0, 1) = Date

    Ändern in:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
         Dim RaBereich As Range, RaZelle As Range
         Set RaBereich = Range(D:D)->Bereich anpassen
         Application.EnableEvents = False
         For Each RaZelle In Range(Target.Address)
               If Not Intersect(RaZelle, RaBereich) Is Nothing Then RaZelle.Offset(0, 1) = Now: _
               RaZelle.Offset(0, 1).NumberFormat = dd/mm/yyyy hh:mm:ss->Datum/Uhrzeit in E eintragen
               Columns(E).EntireColumn.AutoFit->Spalte E auf Optimale Breite einstellen
         Next RaZelle
         Application.EnableEvents = True
         Set RaBereich = Nothing
    End Sub

    Gruß Karl
     
  3. Ola,

    elegante Lösung, ich bin gespannt, wie es geht .... Erst mal danke, teste ich Montag ;-)
     
  4. Hallo PCDjoe

    Jetzt hatte ich noch etwas Zeit zum Basteln, da ich in letzter Zeit wenig neue Makros erstelle, na ja, Du kennst das ja.

    Mit Hilfsspalte F Notfalls Ausblenden und 2 Makros im Tabellenblatt müßte es gehen,
    zumindest war ich fürs erste zufrieden mit dem Makroablauf.

    Beim Klick in Spalte D wird der Wert von D in Spalte F übernommen
    Nach ändern von D wird F abgefragt ob F ist, dann wird D mit F verglichen.
    wenn Spalte F nicht sichtbar sein soll, dann Spalte F bitte vor Makroeinkopieren Ausblenden

    Wenn D (noch leer war)  kein Eintrag
    Wenn D nicht leer war aber ungleich F dann Datum und Uhrzeit in E

    Teste
    Notfalls noch etwas anpassen!

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '   Application.ScreenUpdating = False-> Bildschirm Aktualisierung AUS
       Dim RaBereich As Range, RaZelle As Range
       Set RaBereich = Range(D:D)->Bereich anpassen
       Application.EnableEvents = False
       For Each RaZelle In Range(Target.Address)
           If Not Intersect(RaZelle, RaBereich) Is Nothing Then RaZelle.Offset(0, 2) = Intersect(RaZelle, RaBereich)
           Next RaZelle
           Application.EnableEvents = True
           Set RaBereich = Nothing
    '       Application.ScreenUpdating = True-> Bildschirm Aktualisierung wieder EIN
    End Sub

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    '      Application.ScreenUpdating = False-> Bildschirm Aktualisierung AUS
          Dim RaBereich As Range, RaZelle As Range
          Set RaBereich = Range(D:D)->Bereich anpassen
          Application.EnableEvents = False
          For Each RaZelle In Range(Target.Address)
          If Not Intersect(RaZelle, RaBereich) Is Nothing _
          And RaZelle.Offset(0, 2) > _
          And RaZelle.Offset(0, 2) <> RaZelle _
          Then RaZelle.Offset(0, 1) = Now: _
          RaZelle.Offset(0, 1).NumberFormat = dd/mm/yyyy hh:mm:ss: _
          Columns(E).EntireColumn.AutoFit->Datum/Uhrzeit in Spalte E & Zelle Formatieren & Spalte E Optimale Breite
       Next RaZelle
       Application.EnableEvents = True
       Set RaBereich = Nothing
    '   Application.ScreenUpdating = True-> Bildschirm Aktualisierung wieder EIN
    End Sub

    Ps.
    Wird eine Spalte Komplett Markiert, z.B bei klick auf Spaltenkopf A,
    gibt es eine längere Wartezeit, bei Teilmarkierung einer Spalte alles OK,
    desshalb Zeile F vorher Ausblenden. wenn gewünscht.

    Bitte
           Application.ScreenUpdating = False-> BildschirmAktualisierung AUS
    und
           Application.ScreenUpdating = True-> BildschirmAktualisierung EIN

    erst Aktivieren, wenn Makro zufriedenstellend läuft, verkürzt dann die Wartezeit beim Markieren von Zellen.


    Hoffe hilft dir weiter!
    Gruß Karl
     
  5. Hallo PCDjoe

    Posting vom 07.01.07 um 18:34:35 getestet?

    Gruß karl
     
  6. Ola,

    sorry, das hatte ich wegen eines per Mail von Matjes gekommenen Makros nícht mehr gesehen und dann auch keine Benachrichtigung mehr erhalten.
    Tut mir leid, dass ich das ignoriert habe, ist mir echt peinlich.
    Und eben hatte ich gar nicht so weit nach unten geschaut, weil ich dachte, du würdest meinen erst favorisiert er Funktionen und dann will er selber Makros

    Auch wenn es den Lapsus nicht besser macht, ich hab neben der Arbeit nur mit einem Auge draufgeschaut,

    Entschuldigung angenommen?
    Ich teste gleich noch, ich hab die Tabelle grad in Arbeit.
     
  7. Ola,

    nun aber ;-)
    danke, funktioniert tadellos.
    Matjes hat die Sache mit der Hilfsspalte daruch umgangen, dass er gleich ein verborgenes Blatt genommen hat. Wie er dabei hinbekommen hat, dass die Prüfung auch dann noch funktioniert, wenn die ursprüngliche Tabelle neu sortiert wird, ist mir ein Rätsle geblieben.

    Insofern hat Deine Lösung den Vorteil, dass alles zu sehen ist: Den alten Inhalt, den neuen Inhalt und die Änderungszeit.
    Auch die Tatsache, dass die Hilfspalte bewusst mit sortiert werden kann, hat für mich Vorteile.
    Nachteilig ist:
    - dass bei einem weiteren Klick in eine schon veränderte Zelle der Inhalt verändert wird.
    - das das Makro auch reagiert, wenn mehr als eine Zelle markiert wird.

    Aber das ist bei Bedienung Gewöhnungssache und tut der Funktion keinen Abbruch.

    Ein großes Danke und noch mal eine Entschuldigung hinterher.
     
  8. Hallo PCDjoe

    Entschuldigung angenommen!

    Es steckt ja immer mehr oder weniger Zeit, welche man selbst aufwendet um zu Helfen.
    Als Gegenzug erwartet man Natürlich auch eine Antwort.

    Richtig ist auch, man kann in der Eile auch einmal etwas Übersehen.

    Wenn dann die Antwort (danke, funktioniert tadellos.) zurück kommt, hilft es dem einen oder anderen ebenfals weiter!

    Und für einem selbst, ist es eine kleine Anerkennung!

    Gruß Karl
     
Die Seite wird geladen...

[excel]Marker setzen - Ähnliche Themen

Forum Datum
Windows 10- Laptop lässt sich nicht zurücksetzen Software: Empfehlungen, Gesuche & Problemlösungen 31. Okt. 2016
PC Neu aufsetzen fehlgeschlagen Windows 10 Forum 22. Juli 2016
Gefahr auf Windows 7 zu downgraden bei Zurücksetzen? Windows 10 Forum 26. Juni 2016
Zurücksetzen des PC's Windows 10 Forum 12. Feb. 2016
Windows 7 lässt sich nicht mehr auf Werkseinstellungen setzen Windows 7 Forum 10. Feb. 2016