Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Text einfärben und Cursor in neue Zellzeile setzen

Text einfärben und Cursor in neue Zellzeile setzen
22.08.2017 09:26:04
Nitokris
Hallo VBA-Freunde,
ich habe eine umfangreiche Tabelle, die in den verschiedenen Spalten Informationen zu Projekten auflistet. Spalte C enthält Bemerkungen. Diese wird wöchentlich aktualisiert. Da pro Projekt nur eine Zeile vorgesehen ist, wird der Zellinhalt geändert: Dazu wird jede Woche das aktuelle Datum eingetragen und dahinter die jeweilige Bemerkung gesetzt. Um die Neuerungen zu kennzeichnen, wird der neue Text blau eingefärbt, der der vergangenen Woche auf schwarz gesetzt.
Da die Tabelle viele Projekte umfasst, ist das Prozedere jedes Mal recht mühselig. Gibt es eine Möglichkeit, er per VBA zu automatisieren? D.h. in allen Zellen der Spalte C...
- den Text, sofern vorhanden, schwarz einzufärben,
- in der nächsten Zeile (innerhalb der Zelle!) das aktuelle Datum und einen Doppelpunkt in Blau einzufügen sowie
- den Cursor dahinter zu setzen (so dass von dort aus blau weitergeschrieben werden kann)?
Ich habe ein Minimalbeispiel angehängt. Für Ideen wäre ich sehr dankbar.
https://www.herber.de/bbs/user/115623.xlsx
Viele Grüße
Nitokris

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teillösung von Hand
22.08.2017 09:42:13
Hand
Hallo,
der erste Teil-Schrittist einfach: die ganze Spate markieren und die Schriftfarbe auf schwarz setzen.
Der Cursor (mit blau) in eine neue Zeile der selbe Zelle zu setzen, mag zwar gehen, aber 2 Klicks zu sparen, lohnt nicht den Aufwand der Programmierung.
mfg
AW: Teillösung von Hand
22.08.2017 10:01:06
Hand
Hallo Fennek,
für die Einsparung von 2 Klicks lohnt sich keine Programmierung, das stimmt. Aber bei etwa 50 Projekten, die pro Woche zu aktualisieren sind, ist der Aufwand der Integration des neuen Datums und der Umstellung auf die Schriftfarbe "Blau" (muss ja in jeder Zeile gemacht werden) schon etwas höher ;)
Viele Grüße
Nitokris
Anzeige
AW: Text einfärben und Cursor in neue Zellzeile setzen
22.08.2017 10:52:54
Piet
Hallo Nitrokris,
lade mal den folgenden Code in Tabelle1 (Modul) und schau mal was passiert. ggf. noch anpassen, denn im Augenblick wehrte ich Spalte 5 = E aus. Wenn die Eingabe in B erfolgen soll bitte auf Column 2 aendern.
Das Makro besteht aus zwei verschiedenen Ereignissen. Beim anklicken der Zelle merke ich mir den Wert und die Adresse. Bei Eingabe in die gleiche Zelle erfolgt die Auswertung für die Schriftfarbe. Anschliessend geht der Cursor um 1 Zeile nach unten.
Ich hoffe ich konnte dir helfen, würde mich freuen
mfg Piet
Option Explicit     '22.8.2017  Piet  Herber Forum
Dim Wert As String, Adr1 As String
Dim Start As Integer, Zahl As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Wert = Target.Value     'Dieses Makro merkt sich:
Adr1 = Target.Address   'Zellinhalt -vor Eingabe-
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column  5 Then Exit Sub
If Target.Address = Adr1 Then
Start = Len(Wert)
Zahl = Len(Target) - Len(Start)
Target.Font.ColorIndex = 1    'Schriftfarbe zuerst schwarz setzen
'Schriftfarbe über Start und Zahl auf blau setzen
Target.Characters(Start:=Start, Length:=Zahl).Font.ColorIndex = 41
'Cursor um eine Zeile nach unten
Target.Offset(1, 0).Select
End If
End Sub

Anzeige
AW: Text einfärben und Cursor in neue Zellzeile setzen
22.08.2017 10:53:56
Piet
Hallo Nitrokris,
lade mal den folgenden Code in Tabelle1 (Modul) und schau mal was passiert. ggf. noch anpassen, denn im Augenblick wehrte ich Spalte 5 = E aus. Wenn die Eingabe in B erfolgen soll bitte auf Column 2 aendern.
Das Makro besteht aus zwei verschiedenen Ereignissen. Beim anklicken der Zelle merke ich mir den Wert und die Adresse. Bei Eingabe in die gleiche Zelle erfolgt die Auswertung für die Schriftfarbe. Anschliessend geht der Cursor um 1 Zeile nach unten.
Ich hoffe ich konnte dir helfen, würde mich freuen
mfg Piet
Option Explicit     '22.8.2017  Piet  Herber Forum
Dim Wert As String, Adr1 As String
Dim Start As Integer, Zahl As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Wert = Target.Value     'Dieses Makro merkt sich:
Adr1 = Target.Address   'Zellinhalt -vor Eingabe-
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column  5 Then Exit Sub
If Target.Address = Adr1 Then
Start = Len(Wert)
Zahl = Len(Target) - Len(Start)
Target.Font.ColorIndex = 1    'Schriftfarbe zuerst schwarz setzen
'Schriftfarbe über Start und Zahl auf blau setzen
Target.Characters(Start:=Start, Length:=Zahl).Font.ColorIndex = 41
'Cursor um eine Zeile nach unten
Target.Offset(1, 0).Select
End If
End Sub

Anzeige
AW: Text einfärben und Cursor in neue Zellzeile
22.08.2017 14:43:24
Nitokris
Hallo Piet,
vielen Dank für die schnelle und ausführliche Antwort.
Das Makro funktioniert, leistet aber noch nicht zu 100 % das, was ich im Kopf hatte.
1. Ist es möglich, zusätzlich immer noch das aktuelle Datum mit Doppelpunkt und Leerzeichen an den Anfang der neuen Zeile zu setzen? Von dort aus könnte man dann sofort in Blau weiterschreiben.
2. Das Kriterium, Text immer dann einzufärben, wenn in die Zelle geklickt wird, scheint mir fehleranfällig - sobald jemand z.B. aus Versehen in die Zelle klickt, wird der gerade eingegebene Text schwarz, obwohl er ja bis zur nächsten Woche noch aktuell ist. Ich würde das Makro eher mit einer Schaltfläche verknüpfen: Bei Betätigung wird der entsprechende Spaltenbereich (E4:E6) zunächst schwarz gefärbt und wird dann in einer neuen Zeile jeder (belegten) Zelle dieses Bereichs das Datum in Blau eingefügt und der Cursor hintenrangesetzt. Ist das eine realisierbare Idee oder habe ich mich zu wirr ausgedrückt? ;)
Anzeige
AW: Text einfärben und Cursor in neue Zellzeile
22.08.2017 16:12:24
Piet
Hallo Nitrokris,
schön das mein Makro wenigstens zum Teil funktioniert, machen wir den zweiten Versuch!
Den unteren Teil in ein normales Modul kopieren und einem Button das Makro "Schrift_ausfüllen" zuweisen.
Der Makro Start zum -Zelle ausfüllen- erfolgt jetzt definitv nur noch über den Button, sonst nicht mehr!!
Nachteil ist, das man für jedes Zelle ausfüllen den Button betaetigen muss. Geht leider nicht anders.
'dieser Makro Teil aus Tabelle1 bleibt bestehen !! - '** den Rest bitte löschen, er könnte Fehler verursachen !!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Wert = Target.Value 'Dieses Makro merkt sich:
Adr1 = Target.Address 'Zellinhalt -vor Eingabe-
End Sub
mfg Piet
Option Explicit     '22.8.2017  Piet  Herber Forum
Public Wert As String, Adr1 As String
Public Start As Integer, Zahl As Integer
Sub Schrift_ausfüllen()
Start = Len(Range(Adr1))
Range(Adr1).Font.ColorIndex = 1    'Schriftfarbe schwarz setzen
Range(Adr1).Value = Wert & Chr(10) & Format(Now, "dd.m.yy") & ": "
Range(Adr1).Characters(Start:=Start, Length:=15).Font.ColorIndex = 41
Application.SendKeys "{F2}"
'Cursor um eine Zeile nach unten
Range(Adr1).Offset(1, 0).Select
End Sub

Anzeige
AW: Text einfärben und Cursor in neue Zellzeile
22.08.2017 16:45:25
Piet
Hallo Nitrokris,
ich habe in tabelle2 noch eine dritte variante ausprobiert, vielleicht gefaellt sie dir besser. Probiers mal aus.
Hier benutze ich die Maus Funktion Doppel-klick, um das Ereignis mit Datum vorsetzen aufzurufen.
Kleiner Nachteil, hier kann ich den Cursor im Text nicht ans Ende setzen, der ist irgendwo im Text!
Vorteil, ich brauche den Button nicht zum aktivieren des makros, und habe ihm wie du vorgeschlagen
hast den Bereich von E4:E6 zum Löschen der Schriftfarbe (schwarz) zugewiesen.
Zum Schutz vor Target Fehler und Programmabsturz bitte diesen Teil im Tabelle1 Makro ergaeenzen:
If Target.Column 5 Then Exit Sub
If InStr(Target.Address, ":") Then Exit Sub
mfg Piet

Dim Wert2 As String, Adr2 As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column  5 Then Exit Sub
If InStr(Target.Address, ":") Then Exit Sub
Wert2 = Target.Value     'Dieses Makro merkt sich:
Adr2 = Target.Address    'Zellinhalt -vor Eingabe-
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column  5 Then Exit Sub
If InStr(Target.Address, ":") Then Exit Sub
Start = Len(Range(Adr2))
Range(Adr2).Font.ColorIndex = 1    'Schriftfarbe schwarz setzen
Range(Adr2).Value = Wert2 & Chr(10) & Format(Now, "dd.m.yy") & ": "
Range(Adr2).Characters(Start:=Start, Length:=15).Font.ColorIndex = 41
Application.SendKeys "{F2}"
End Sub
Sub Schrift_in_Schwarz()
'Schrift Bereich auf Schwarz setzen
Range("E4:E6").Font.ColorIndex = 1
End Sub

Anzeige
AW: Text einfärben und Cursor in neue Zellzeile
23.08.2017 08:16:11
Nitokris
Guten Morgen Piet,
deine letzte Variante gefällt mir sehr gut, danke :)
Jetzt habe ich versucht, eine andere Spalte zuzuweisen. Dafür habe ich If Target.Column und Range("E4:E6").Font.ColorIndex entsprechend angepasst, habe aber die Fehlermeldung bekommen, die Methode Range sei fehlgeschlagen. Was habe ich noch vergessen, anzupassen?
Und noch eine Idee von mir: Wäre es möglich, das Datum bzw. die blaue Schrift auch in die erste statt die letzte Zeile zu schreiben (und den alten Text demzufolge eine Zeile nach unten zu setzen)?
Schon mal vielen Dank für deine Mühe und einen sonnigen Tag!
Viele Grüße, Nitokris
Anzeige
AW: Text einfärben und Cursor in neue Zellzeile
23.08.2017 22:14:56
Piet
Hallo Nitokris,
versuchen wir es einfach, geht aber nur mit Doppelklick! Aendere bitte den Code: - beachte ob die Variable Wert oder Wert2 ist!
Range(Adr3).Value = Format(Now, "dd.m.yy") & ": " & Chr(10) & Wert
Range(Adr3).Characters(Start:=1, Length:=9).Font.ColorIndex = 41
mfg Piet
AW: Text einfärben und Cursor in neue Zellzeile
24.08.2017 07:55:42
Nitokris
Hallo Piet,
zwar wird das Datum jetzt oben hingeschrieben, aber dafür der restliche Zellinhalt komplett gelöscht :( Der Code sieht jetzt so aus:
Dim Wert2 As String, Adr2 As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column  5 Then Exit Sub
If InStr(Target.Address, ":") Then Exit Sub
Wert2 = Target.Value     'Dieses Makro merkt sich:
Adr2 = Target.Address    'Zellinhalt -vor Eingabe-
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column  5 Then Exit Sub
If InStr(Target.Address, ":") Then Exit Sub
Start = Len(Range(Adr2))
Range(Adr2).Font.ColorIndex = 1    'Schriftfarbe schwarz setzen
Range(Adr2).Value = Format(Now, "dd.m.yy") & ": " & Chr(10) & Wert
Range(Adr2).Characters(Start:=1, Length:=9).Font.ColorIndex = 41
Application.SendKeys "{F2}"
End Sub
Sub Schrift_in_Schwarz()
'Schrift Bereich auf Schwarz setzen
Range("E4:E6").Font.ColorIndex = 1
End Sub
Hast du noch eine Idee?
Anzeige
AW: Text einfärben und Cursor in neue Zellzeile
24.08.2017 10:51:44
Piet
Hallo
ja habe ich, hatte ich auch extra darauf hingewiesen!! Sicher hast du es übersehen:
Format(Now, "dd.m.yy") & ": " & Chr(10) & Wert - muss sein: Wert2
Wenn du die Variable Wert2 deklarierst, in Target die Variable Wert2 laedst: - Wert2 = Target.Value
aber dann im folgenden Makro nur Wert angibst hast du eine leere Variable angehaengt!! Das ist alles!!
mfg Piet
AW: Text einfärben und Cursor in neue Zellzeile
24.08.2017 14:18:47
Nitokris
Hallo Piet,
ja, du hast natürlich vollkommen recht, ich hatte es überlesen. Jetzt funktioniert jedenfalls alles hervorragend, tausend Dank dafür!!!
Viele Grüße
Nitokris
Anzeige

334 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige