繁体   English   中英

在整个 ROW 中搜索位于另一个单元格中的日期

[英]Search an entire ROW for a date located in another Cell

我对 Excel 中的 stackoverflow.com 和 VBA 都不熟悉,所以请放轻松 :-)

我希望在我的 Excel 工作表中有一个按钮,单击该按钮时,将在整个或第 1 行中搜索日期(位于另一个单元格中)。 如果它在第 1 行的呼叫中找到日期,它将在其下方的单元格中输入一些文本。 如果它没有找到日期,它会将日期添加到行中的下一个空闲单元格,然后在其下方的单元格中添加文本。

我知道我问了很多,我很高兴接受部分答案,因为我知道如何做这方面的一些事情。 例如粘贴文本等。 我发现困难的部分是在整个第 1 行中查找日期,然后在未找到日期的情况下查找下一个空白单元格。

任何帮助或指示将不胜感激!

但是,如果我得到回复,我会更高兴,该人还解释了代码的工作原理,因为我非常渴望学习 VBA 并在将来再次使用它,而不仅仅是复制和粘贴。

提前感谢您的任何答复! :-)

试试这个。 我已经详细评论了代码,但如果您有任何问题,请在评论中提问:)

Sub test()
    Dim ws As Worksheet
    Dim rng As Range
    Dim targetDate As Range

    'change sheet1 to suit
    Set ws = ThisWorkbook.Worksheets("Sheet1")

    'change address of your cell with target date
    Set targetDate = ws.Range("A4")

    'tries to find target date in first row
    Set rng = ws.Range("1:1").Find(What:=targetDate, LookAt:=xlWhole, MatchCase:=False)

    If rng Is Nothing Then
        'if nothing found - search for last non empty column
        Set rng = ws.Range("1:1").Find(What:="*", LookAt:=xlWhole, MatchCase:=False, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)           
        If rng Is Nothing Then
            'if row 1 is empty
            Set rng = ws.Range("A1")
        Else
            'take next column after last non empty
            Set rng = rng.Offset(, 1)
        End If
        'write target date
        rng = targetDate
        rng.NumberFormat = "dd.mm.yyyy"
        'write something below the date
        rng.Offset(1) = "test"
    Else
        'if date is found - write something below the date
        rng.Offset(1).Value = "test2"
    End If
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM