VBA nicht ausgefuellte Felder einfaerben
Hallo zusammen,
Leider habe ich mit VBA nur noch wenig zu tun, so dass mein Wissen darueber nicht mehr existent ist. Ich hoffe ihr könnt mir helfen.
Fuer eine Protokolldatei auf Excelbasis mit VBA und hier moechte ich eine Erweiterung vornehmen. Ich habe Excel 2010; das Protokoll soll aber mehreren Nutzern mit unterschiedlichen Excelversionen zuganglich gemacht werden.
Die Datei habe ich geerbt und sie wurde ursprünglich mit Makros geschrieben und an Stellen ueberarbeitet.
Aussehen der Datei:
Die Datei hat mehrere Spalten:
A-Zeilenindex-Nr
B-Kuerzel (T=Aufgabe, E=Entscheidung, ...)
C-Infotext
D-Verantwortlicher
E-Datum von
F-Datum bis
Jede Zeile ist ein Eintrag in dem die relevanten Felder manuell ausgefüllt werden sollen. Zur Unterstützung habe ich Buttons, die die Formate in die einzelne Zeile kopiere. Das heisst ich klicke auf eine Zeile dann auf einen der Buttons (zB der mit T) und es erscheint der Zeilenindex in A und das gedückte Kürzel in B und zusäetzlich das Datum.
Das klappt alles soweit.
Nun moechte ich die Spalte D (Verantwortlicher) in rot setzen wenn diese Zelle durch einen der Buttons aktiviert wird und kein Zeichen in der Spalte D eingetragen ist. Das hab ich soweit fuer einen Button erstellt. Problem ist jetzt, dass sobalt die Spalte ausgefuellt wird nichts passiert. Die Zelle ist weiterhin rot. Wie kann ich das andern?
Sub NeuerBeschluß()
Dim zelle As Range
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter
End If
If Range("B4").Value = "" Then
Range("B4").Select
Else
Range("B3").End(xlDown).Offset(1, 0).Range("A1").Select
End If
Application.ScreenUpdating = False
'
ActiveCell.FormulaR1C1 = "D"
Application.Run "SetNewNumber"
Application.Run "CopyFormat"
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.FormulaR1C1 = "all"
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
ActiveCell.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Offset(0, -3).Range("A1").Select
Application.ScreenUpdating = True
For Each zelle In Worksheets("Close").Range("A4:F33")
If zelle = "" Then
zelle.Interior.ColorIndex = 3
Else
zelle.Interior.ColorIndex = xlNone
End If
Next
End Sub
Des weiteren kopiert das VBA die daruberstehende Zeile, wenn ich den Button aktiviere. Es soll aber nur in manchen Fällen die gesamte Zeile farblich markieren. In anderen Fällen soll es einfach das Format einer bestimmten Zelle übernehmen bzw. die Zeile weiss einfarben. Könnt ihr mir dazu einen Tipp geben?
Sub CopyFormat()
'
Dim isect As Range
Range("A4:J4").Copy
Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 10)).PasteSpecial Paste:=xlFormats
Cells(ActiveCell.Row, 2).Validation.InCellDropdown = False
ActiveCell.Offset(0, 1).Select
Application.CutCopyMode = False
Bei Fragen immer gerne nachfragen
Leider habe ich mit VBA nur noch wenig zu tun, so dass mein Wissen darueber nicht mehr existent ist. Ich hoffe ihr könnt mir helfen.
Fuer eine Protokolldatei auf Excelbasis mit VBA und hier moechte ich eine Erweiterung vornehmen. Ich habe Excel 2010; das Protokoll soll aber mehreren Nutzern mit unterschiedlichen Excelversionen zuganglich gemacht werden.
Die Datei habe ich geerbt und sie wurde ursprünglich mit Makros geschrieben und an Stellen ueberarbeitet.
Aussehen der Datei:
Die Datei hat mehrere Spalten:
A-Zeilenindex-Nr
B-Kuerzel (T=Aufgabe, E=Entscheidung, ...)
C-Infotext
D-Verantwortlicher
E-Datum von
F-Datum bis
Jede Zeile ist ein Eintrag in dem die relevanten Felder manuell ausgefüllt werden sollen. Zur Unterstützung habe ich Buttons, die die Formate in die einzelne Zeile kopiere. Das heisst ich klicke auf eine Zeile dann auf einen der Buttons (zB der mit T) und es erscheint der Zeilenindex in A und das gedückte Kürzel in B und zusäetzlich das Datum.
Das klappt alles soweit.
Nun moechte ich die Spalte D (Verantwortlicher) in rot setzen wenn diese Zelle durch einen der Buttons aktiviert wird und kein Zeichen in der Spalte D eingetragen ist. Das hab ich soweit fuer einen Button erstellt. Problem ist jetzt, dass sobalt die Spalte ausgefuellt wird nichts passiert. Die Zelle ist weiterhin rot. Wie kann ich das andern?
Sub NeuerBeschluß()
Dim zelle As Range
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter
End If
If Range("B4").Value = "" Then
Range("B4").Select
Else
Range("B3").End(xlDown).Offset(1, 0).Range("A1").Select
End If
Application.ScreenUpdating = False
'
ActiveCell.FormulaR1C1 = "D"
Application.Run "SetNewNumber"
Application.Run "CopyFormat"
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.FormulaR1C1 = "all"
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
ActiveCell.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Offset(0, -3).Range("A1").Select
Application.ScreenUpdating = True
For Each zelle In Worksheets("Close").Range("A4:F33")
If zelle = "" Then
zelle.Interior.ColorIndex = 3
Else
zelle.Interior.ColorIndex = xlNone
End If
Next
End Sub
Des weiteren kopiert das VBA die daruberstehende Zeile, wenn ich den Button aktiviere. Es soll aber nur in manchen Fällen die gesamte Zeile farblich markieren. In anderen Fällen soll es einfach das Format einer bestimmten Zelle übernehmen bzw. die Zeile weiss einfarben. Könnt ihr mir dazu einen Tipp geben?
Sub CopyFormat()
'
Dim isect As Range
Range("A4:J4").Copy
Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 10)).PasteSpecial Paste:=xlFormats
Cells(ActiveCell.Row, 2).Validation.InCellDropdown = False
ActiveCell.Offset(0, 1).Select
Application.CutCopyMode = False
Bei Fragen immer gerne nachfragen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 230532
Url: https://administrator.de/contentid/230532
Ausgedruckt am: 08.11.2024 um 09:11 Uhr