【问题标题】:Excel, VBA find date in columnExcel,VBA 在列中查找日期
【发布时间】:2016-11-02 17:23:57
【问题描述】:

我在 excel 中有这样的日历:

我正在尝试做什么。我想编写一个宏,在标记单元格并按下按钮后,宏获取字符串(此处:user1),然后返回 1 列以获取时间并向上获取日期(在本例中为 3)。但 我已经得到了user1和日期,但是我无法得到日期

这是代码

Dim cell As Object
Dim client As String
Dim date As Date
Dim hour As Date
Dim rowc As Long
Dim colc As Long
    For Each cell In Selection
       client = cell.Value
       colc = ActiveCell.Column
       rowc = ActiveCell.Row
    Next cell

    hour = Cells(rowc, colc - 1).Value
Cells(4, 17).Value = hour 'works to this point

    t = rowc
    colc = colc-1 
    For i = t To 0

    If IsDate(Cells(i, colc).Value) = True Then

     date= Cells(i, colc).Value

    Else
    rowc = rowc - 1
    End If
    Next i



 'Cells(3, 17).Value = date
 Cells(5, 17).Value = client

行的解释:colc = colc-1 - 每个日期(31、1、2...)它是一个合并在一起的 2 个单元格。如果 user1 单元格地址是 f.e. 8,14 所以 3-11-2016 单元格列不是 8 而是 7。

有什么建议吗?

编辑:

似乎这个循环甚至没有循环。当我将 true 更改为 false 时,msgbox 没有出现。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    For 循环不能这样工作。如果 t = 10,并且您有 For i = t To 0,则循环甚至不会迭代一次,因为 10 > 0。据我了解您的要求,您想让 i 向后退。尝试使用 Do While 循环:

    i = t
    Do while i > 0
        If IsDate(Cells(i, colc).Value) = True Then
            date= Cells(i, colc).Value
        Else
            rowc = rowc - 1
        End If
        i = i - 1
    Loop
    

    【讨论】:

    • 该死的......我的菜鸟错误。作为魅力发挥作用。谢谢1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2011-06-27
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2014-06-29
    相关资源
    最近更新 更多