Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1428to1432
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
Inhaltsverzeichnis

Offset

Offset
03.06.2015 09:09:09
Roman
Hallo zusammen
Ich habe folgendes Problem das ich gerne mit einem Makro lösen möchte.
Für ein Wartungsplan hätte ich gerne beim Eintrag eines Datums in eine Zelle einen neuen Vorschlag für den nächsten Wartungstermin.
Wenn ein Datum in eine Zelle einer Zeile eingetragen wird soll die Zelle grün hinterlegt werden und eine weitere Zell mit einem Offset, rot und mit Text “Wartung“ ausgefüllt werden.
Der Offsetwert wird in Zelle A1 eingetragen als “W“ für wöchentlich (Offsetwert= 1),“M“ für monatlich (Offsetwert=4)
Folgendes habe ich bereits versucht komme aber nicht weiter
If Range("A1").Value = "M" Then Range("A1:IV1").End(xlToRight).Offset(0, 4).Select
With Selection.Interior
.Color = 255
End With
ActiveCell.Select
'ActiveCell.FormulaR1C1 = "Wartung"
Das ganze müsste natürlich über mehrere Zeilen einer ganzen Tabelle funktionieren.
Gruss Roman

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Offset
03.06.2015 09:29:58
Bastian
Hallo Roman,
probier mal den folgenden Code aus:
Der Code gehört in das Codefenster des entsprechenden Tabellenblattes (Rechtsklick auf Register des Tabellenblattes und dann "Code anzeigen" wählen):
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strIntervall As String
If IsDate(Target.Value) Then
Application.EnableEvents = False
strIntervall = Range("A1").Value
Select Case strIntervall
Case "W"
Target.Offset(0, 1).Value = "Wartung"
Target.Offset(0, 1).Interior.Color = 255
Case "M"
Target.Offset(0, 4).Value = "Wartung"
Target.Offset(0, 4).Interior.Color = 255
End Select
Application.EnableEvents = True
End If
End Sub
Gruß, Bastian

Anzeige
AW: Offset
03.06.2015 12:27:57
Roman
Hallo Bastian
Erstmal danke für die Hilfe.
Grundsätzlich funktioniert der Code. Vergessen zu erwähnen habe ich dass, das Offset immer von zuletzt eingegebenen Wert (Datum wenn die Wartung gemacht wurde) dazu gezählt wird uns so das neue Datum für die nächste Wartung vorgiebt. Schön wäre auch wenn das eingegebene Datum grün, als erledigt, hinterlegt wird.
Weiter ändert sich der Offsetwert bei jeder Zeile, in der ersten Zeile ist es A1 in der Zweiten A2 usw.
Gruss Roman

AW: Offset
03.06.2015 14:29:13
Bastian
Hallo Roman,
Deinen Wunsch mit der Grünfärbung der Datums- Zelle und der Zeilenweisen Vorgabe des Wartungsintervalls ist leicht zu erfüllen:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strIntervall As String
If IsDate(Target.Value) Then
Application.EnableEvents = False
strIntervall = Cells(Target.Row, 1).Value
Target.Interior.Color = 5287936
Select Case strIntervall
Case "W"
Target.Offset(0, 1).Value = "Wartung"
Target.Offset(0, 1).Interior.Color = 255
Case "M"
Target.Offset(0, 4).Value = "Wartung"
Target.Offset(0, 4).Interior.Color = 255
End Select
Application.EnableEvents = True
End If
End Sub
Aber was Du mit
"Vergessen zu erwähnen habe ich dass, das Offset immer von zuletzt eingegebenen Wert (Datum wenn die Wartung gemacht wurde) dazu gezählt wird uns so das neue Datum für die nächste Wartung vorgiebt."
meinst, erschließt sich mir noch nicht. Kannst Du es an einem Beispiel erläutern?
Gruß

Anzeige
AW: Offset
03.06.2015 15:28:04
Roman
Im Prinzip ist es ganz einfach wenn ich eine monatliche Wartung vorgebe habe ich alle 4 Wochen eine Eintrag mit "Wartung", jetzt kann es aber sein das die Wartung 2 Woche später als geplant durchgeführt wurden und sich somit alle Folgetermine um diese Woche nach hinten schieben. Das effektive Datum an der die Wartung gemacht wurde wird in die Tabelle eingetragen als Bestätigung der Wartung.
Das Problem aber wenn zb. die Wartung in KW22 stat wie gepant in KW20 durchgeführt wurde bleibt die Vorgabe "Wartung" auf KW20 bestehen müsste aber wider raus. Das heisst vor dem letzten eingetragenen Datum sind Wartungsintervalle in Abständen von 4 Wochen zu sehen und hinter dem letzten eingetragenen Datum nur grüne Felder mit den effektiven Wartungsdatum.

Anzeige
AW: Offset
08.06.2015 09:11:39
Bastian
Hallo Roman,
ich hoffe, ich habe Dich richtig verstanden. Versuch es mal mit dem folgenden Code:
Wird ein Datum eingetragen, werden zunächst alle "Wartungs- Einträge" in der entsprechenden Zeile gelöscht. Dann wird der neue "Wartungs- Eintrag" eingetragen.
Gruß, Bastian
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strIntervall As String
Dim rngZelle As Range
If IsDate(Target.Value) Then
For Each rngZelle In Cells(Target.Row, 1).EntireRow.SpecialCells(xlCellTypeConstants)
If rngZelle.Value = "Wartung" Then
rngZelle.ClearContents
With rngZelle.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next rngZelle
Application.EnableEvents = False
strIntervall = Cells(Target.Row, 1).Value
Target.Interior.Color = 5287936
Select Case strIntervall
Case "W"
Target.Offset(0, 1).Value = "Wartung"
Target.Offset(0, 1).Interior.Color = 255
Case "M"
Target.Offset(0, 4).Value = "Wartung"
Target.Offset(0, 4).Interior.Color = 255
End Select
Application.EnableEvents = True
End If
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige