2017-08-27 9 views
0

基本的に私は、約5つのステータス(ブリーフィング、広告、ショートリスト、セレクション、オファー)があり、空席ごとに上記のステータスのリストとしてステータスセルがあり、変更されている空席の状況に基づいて手動で入力します。Excelで選択されたリストアイテムに対応する特定のセルに日付を反映させるにはどうすればよいですか?

ステータスが変更された日付を特定のセルに反映させるためのVBAコード(以下に添付)が見つかりました。別のステータス(基本的にステータスの更新)を選択すると、以前の入力が上書きされますする必要があります少し複雑です。

ステータスごとに列を作成しました。リストから選択した各ステータスのセルの日付を反映するためにこのコードが必要です。たとえば、特定の空き状況についてのブリーフィングを選択すると、 「ブリーフィング」欄の該当するセルを選択し、その特定空室のステータスを「選択」に変更すると、「選択」欄の対応するセルに日付が反映されます。データ入力に応じて、オフセット

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 

答えて

0

あなたはあなたのコードを変更して列を調整するSelect Case Statementを追加することができます:

私がこれまでに発見したコードは以下の通りです

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 
関連する問題