2017-01-09 5 views
0

Excelワークシートの一致する日付列にカーソルを合わせます。 「Find」や「Match」の機能はすべて正しく動作していないようです。次の形式でHU10:DD.MM.YYYY、フォーマットされたユーザ定義の( - ない差も試み日付とテキスト)日付値はR10の範囲内にあるエクセル2007をExcel - VBAを使用して今日の日付に応じて特定の列にジャンプ

を用い

- 私。今日の日付はセル内にあります(CI10)。

ワークシートウィンドウは、日付エントリが始まる前の最後の列である「Q」列でフリーズされます。私が達成しようとした何

は列「CI10は、」私は、次のVBAコードで特定の列を着色するソリューションをしようとしたテストの理由から列「Q」

の隣になりますので、右にスクロールすることです:

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は常に「Nothing」になるため、機能しませんでした。

すべてのヘルプは非常に、特に私はこれをしなかったし、それがうまく働いた探索範囲内のシステムの日付と日付のエントリ間の正しい比較方法

+1

私も日付関数に精通していないのですが、私のために、 'Date'は、あなたの'それはローカライズの問題かもしれないdd.mm.yyyy'と一致していない形式 'M/D/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 

私はこれがあなたが探していたもので、タイトルを読んでいると仮定しています。私は通常私に頭痛作業日付形式を与える非英語/エクセル日付形式(DD/MM/YYYY)を使用していますが、Excelが正しくとにかく

+0

すごくシンプルで、私が望むように動作します。唯一のことは、目的の列が列Qの隣にないことです。対象の列は、列Qと表示されている列の右端の中央に配置されます。 –

+0

@Nikosap目的のセルを左上に置くには、 'c.Select'の代わりに' Application.GoTo c、True'を使います。 – YowE3K

+0

これはかなりうまくいく - thx XowE3Kにたくさんある。 –

0

を日付を処理するために管理

は、私はあなたの日付を検索示唆します細胞を計算するために使用された式ではなく、細胞の値で表される。

したがって、LookIn:=xlFormulasLookIn:=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に変更しましたが、違いはありません。なぜ動作しなかったのかわかりません。 –

関連する問題