Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel-根据今天跳到特定列';用VBA实现日期的自动生成_Excel_Date_Comparison_Positioning_Vba - Fatal编程技术网

Excel-根据今天跳到特定列';用VBA实现日期的自动生成

Excel-根据今天跳到特定列';用VBA实现日期的自动生成,excel,date,comparison,positioning,vba,Excel,Date,Comparison,Positioning,Vba,我尝试将光标调整到excel工作表的匹配日期列。在我看来,所有的“查找”或“匹配”功能都不能正常工作 我正在使用Excel2007 日期值的范围为R10:HU10,格式如下:DD.MM.YYYY,格式为用户定义(也尝试了日期和文本-无差异)。今天的日期在单元格(CI10)中 工作表窗口冻结在“Q”列中,即日期条目开始前的最后一列 我试图实现的是向右滚动,这样“CI10”列将位于“Q”列的旁边 出于测试原因,我尝试使用以下VBA代码为特定列着色: Private Sub Worksheet_Act

我尝试将光标调整到excel工作表的匹配日期列。在我看来,所有的“查找”或“匹配”功能都不能正常工作

我正在使用Excel2007

日期值的范围为R10:HU10,格式如下: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永远是“无”的


非常感谢您提供的任何帮助,特别是关于系统日期和搜索范围中日期项之间正确比较方法的提示

我这样做了,效果很好。 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无论如何都能正确处理日期

我这样做了,效果很好。 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无论如何都能正确处理日期

我建议您在单元格的值中搜索日期,而不是在用于计算单元格的公式中搜索日期

因此,将您的
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

我建议您在单元格的值中搜索日期,而不是在用于计算单元格的公式中搜索日期

因此,将您的
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

我不太熟悉日期函数,但对我来说,
date
返回的格式是
m/d/yyyy
,它与您的
dd.mm.yyyy
不匹配,这可能是本地化问题。尽管如此,您在运行它时是否确实检查了今天是什么?我建议您在设置后立即调用消息框查看值,即
msgboxtodaysdate
我不太熟悉日期函数,但对我来说
date
返回的格式为
m/d/yyyyy
,与您的
dd.mm.yyyy
不匹配,这可能是本地化问题。尽管如此,您在运行它时是否确实检查了今天是什么?我建议您在设置后立即调用消息框查看值,即
msgboxtodaysdate
惊人的简单,它的工作原理与我希望的非常相似。唯一的问题是,所需的列不在列Q旁边。目标列位于列Q和可见列右边框之间的中心。@Nikosap要使所需的单元格位于左上角,请使用
Application.GoTo c,True
而不是
c.Select
。非常简单,它的工作原理与我所希望的非常相似。唯一的问题是,所需的列不在列Q的旁边。目标列位于列Q和可见列右边框之间的中心。@Nikosap要使所需的单元格位于左上角,请使用
Application.GoTo c,True
而不是
c.Select
。我将LookIn更改为xlValues,但没有区别-不知道它为什么不起作用。我将LookIn更改为xlValues,但没有区别-不知道它为什么不起作用。