2016-10-27 68 views
0

我在一系列允許用戶從一組日期中進行選擇的單元格上使用數據驗證。日期基於另一個工作表,基本列爲Today(),Today() - 1,Today() - 2等,一直到-28。這使下拉選擇當前\動態。 雖然我希望做的是使單元格中的每個日期都大於先前的單元格日期,但我只知道如何使用列驗證來完成此操作,而且我顯然已經使用它來生成動態日期列表。 任何想法? 謝謝 Sample image of spreadsheet使用日期下拉菜單並進行列驗證

+0

請出示樣品擅長改變以下語句中的行數和列。 – Karpak

+0

Karpak - 截圖夠了嗎? – JazzyN

+0

是的,它應該是足夠的 – Karpak

回答

0

你不能這樣做使用數據驗證。但是,您可以使用VBA執行此操作。按Alt + F11激活VBA編輯器,然後雙擊要放置該驗證的工作表,並在其中輸入以下腳本。並保存你的Excel,那麼你將有你的驗證到位。

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim OldValue As String 
Dim NewValue As String 
Dim PrevCell As String 
Dim CurRow As Integer 
Dim CurCol As Integer 

On Error GoTo Exitsub 
CurRow = Target.Row 
CurCol = Target.Column 

If CurRow = 1 Or CurCol = 1 Then GoTo Exitsub ' if current row not equal to row 1 or current column = 1, no need to validate 

Application.EnableEvents = False 

NewValue = Target.Value 
Application.Undo 
OldValue = Target.Value 
Target.Value = NewValue 
PrevCell = Cells(CurRow, CurCol - 1).Value 

If Trim(NewValue) = "" Then GoTo Exitsub 

If (PrevCell > NewValue) Then 
    MsgBox "Date is less than previous cell", vbCritical, "Error" 
    Target.Value = OldValue 
    GoTo Exitsub 
End If 
Exitsub: 
Target.NumberFormat = "DD/MMM;@" 
Application.EnableEvents = True 

End Sub 

您可能需要根據您的要求

If CurRow = 1 Or CurCol = 1 Then GoTo Exitsub 
+0

謝謝你。儘管如此,我還是無法使用它。有沒有辦法連接工作簿,以便看看?是使用日期而不是整數的問題嗎? – JazzyN

+0

您可以將工作表作爲問題的一部分。 – Karpak

+0

我看不到任何附件選項。在附加之前,你是否需要一定程度的聲譽? – JazzyN