2017-01-09 30 views
0

我嘗試將光標調整到Excel工作表的匹配日期列。在我看來,所有「查找」或「匹配」功能都無法正常工作。 HU10以下面的格式::使用Excel 2007Excel - 根據今天的日期跳轉到使用VBA的特定列

的日期的值在R10的範圍內

I'm DD.MM.YYYY,格式化的用戶定義(也嘗試的日期和文本 - 沒有區別) 。今天的日期在單元格(CI10)。

工作表窗口凍結在'Q'列中 - 日期條目開始之前的最後一列。

我試圖做到的是滾動到右側,列「CI10」將於明年列「Q」

出於測試的原因,我嘗試瞭解決方案具有以下VBA代碼着色具體列:

Private Sub Worksheet_Activate() 

    Dim TodaysDate As Date 
    Dim Rng As Range 

    TodaysDate = Date 
    With Rows("10:10") 
    Set Rng = .Find(what:=TodaysDate, _ 
    after:=.Cells(.Cells.Count), _ 
    LookIn:=xlFormulas, _ 
    lookat:=xlWhole, _ 
    SearchOrder:=xlByColumns, _ 
    SearchDirection:=xlNext, MatchCase:=False) 
    If Not Rng Is Nothing Then 
    Rng.EntireColumn.Interior.Color = vbMagenta 
    Else 
    'Give a message that today's date was not found 
    MsgBox "Nothing found" 
    End If 
    End With 
End Sub 

它沒有工作,因爲Rng將永遠是'沒有'。

任何幫助將高度讚賞特別提示有關係統的日期,並在搜索範圍

+1

我不是太精通日期的功能,但對我來說'Date'返回格式爲'M/d/yyyy',這不符合您的'dd.mm.yyyy'這可能是本地化問題儘管如此。但是,您是否真的檢查過運行它時的「TodaysDate」?我建議您在設置好之後立即調用消息框來查看該值,即'MsgBox TodaysDate' – PartyHatPanda

回答

1

我這樣做,它能正常工作的日期條目之間正確的比較方法。 dateRange可能類似於「A1:H1」,當前數據輸入到單元格H1中,腳本在運行時會跳轉到單元格H1。

Sub jumpToDate() 
Dim c As Range 
Dim d As Date 
d = Date 
    For Each c In Range("dateRange") 
     If c = d Then 
      c.Select 
     End If 
    Next c 
End Sub 

我想這就是你要找的,只是閱讀標題。

我使用非英文/ EXCEL日期格式(DD/MM/YYYY),這通常讓我頭疼的工作日期格式,但Excel中設法處理日期正確反正

+0

非常簡單,它的工作原理與我希望的非常相似。唯一的問題是,所需的列不在Q列旁邊。目標列位於列Q和可見列的右邊界之間。 –

+0

@Nikosap爲了讓所需的單元格位於左上角,使用'Application.GoTo c,True'而不是'c.Select'。 – YowE3K

+0

這工作得很好 - 很多XowE3K。 –

0

我建議你搜索日期在單元格的值中,而不是在用於計算單元格的公式中。

因此請將您的LookIn:=xlFormulas更改爲LookIn:=xlValues

Private Sub Worksheet_Activate() 
    Dim TodaysDate As Date 
    Dim Rng As Range 

    TodaysDate = Date 
    With Rows("10:10") 
     Set Rng = .Find(what:=TodaysDate, _ 
         after:=.Cells(.Cells.Count), _ 
         LookIn:=xlValues, _ 
         lookat:=xlWhole, _ 
         SearchOrder:=xlByColumns, _ 
         SearchDirection:=xlNext, _ 
         MatchCase:=False) 
     If Not Rng Is Nothing Then 
      Rng.EntireColumn.Interior.Color = vbMagenta 
      'Set the window so that the date is in the top-left corner 
      Application.GoTo Rng, True 
     Else 
      'Give a message that today's date was not found 
      MsgBox "Nothing found" 
     End If 
    End With 
End Sub 
+0

我將LookIn更改爲xlValues,但沒有任何區別 - 不知道爲什麼它不起作用。 –