2017-08-27 1 views
0

Grundsätzlich habe ich ein Excel-Blatt für Tracking-Status in der Einstellung, wo gibt es etwa 5 Status (Briefing, Werbung, Shortlisting, Auswahl, Angebot) und gegen jede Vakanz gibt es eine Statuszelle als eine Liste der oben genannten Status und es hat sich geändert manuell basierend auf dem Status der Vakanz.Wie spiegeln sich Datumsangaben in bestimmten Zellen wider, die einem in Excel ausgewählten Listenelement entsprechen?

Ich habe einen VBA-Code gefunden (unten angehängt), um in einer bestimmten Zelle das Datum widerzuspiegeln, dass der Status geändert wurde, und wenn ich einen anderen Status wähle (grundsätzlich den Status aktualisiere) überschreibt es die vorherige Eingabe, aber was ich muss etwas komplizierter sein.

Ich habe eine Spalte für jeden Status erstellt, und ich brauche diesen Code, um das Datum auf Zelle des jeweiligen Status widerzuspiegeln, die dem aus der Liste ausgewählten entspricht, zum Beispiel das Briefing für eine bestimmte Vakanz wird das Datum auf der entsprechenden Zelle in der Spalte "Briefing", und wenn ich den Status für diese bestimmte Vakanz von der Liste in "Auswahl" ändern, spiegelt ein Datum die entsprechende Zelle in der Spalte "Auswahl" wider.

Der Code, den ich unter bisher gefunden habe:

Private Sub Worksheet_Change(ByVal Target As Range) 
'Update 20140722 
Dim WorkRng As Range 
Dim Rng As Range 
Dim xOffsetColumn As Integer 
Set WorkRng = Intersect(Application.ActiveSheet.Range("N:N"), Target) 
xOffsetColumn = 1 
If Not WorkRng Is Nothing Then 
Application.EnableEvents = False 
For Each Rng In WorkRng 
If Not VBA.IsEmpty(Rng.Value) Then 
Rng.Offset(0, xOffsetColumn).Value = Now 
Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy" 
Else 
Rng.Offset(0, xOffsetColumn).ClearContents 
End If 
Next 
Application.EnableEvents = True 
End If 
End Sub 

Antwort

0

Sie Ihren Code ändern und Select Case Statement hinzufügen Spalte zur Einstellung auf die Dateneingabe Offset abhängig:

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim WorkRng As Range 
    Dim Rng As Range 
    Dim xOffsetColumn As Long 

    Set WorkRng = Intersect(Application.ActiveSheet.Range("N:N"), Target) 
    If Not WorkRng Is Nothing Then 
    Application.EnableEvents = False 
    For Each Rng In WorkRng 
     Select Case Rng.Value2 
     Case "Briefing" 
      xOffsetColumn = 1 'Column O 
     Case "Advertising" 
      xOffsetColumn = 2 'Column P 
     Case "Shortlisting" 
      xOffsetColumn = 3 'Column Q 
     Case "Selection" 
      xOffsetColumn = 4 'Column R 
     Case "Offering" 
      xOffsetColumn = 5 'Column S 
     Case Else 
      xOffsetColumn = 6 'Column T - entry not listed above 
     End Select 
     Rng.Offset(0, xOffsetColumn).Value = Now 
     Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy" 
    Next 
    Application.EnableEvents = True 
    End If 
End Sub 
Verwandte Themen