【问题标题】:Find and select cell with a certain date in a row with dates在带有日期的一行中查找并选择具有特定日期的单元格
【发布时间】:2021-05-21 09:44:14
【问题描述】:

我正在尝试在名为archief 的工作表中的日期行中查找并选择一个单元格。日期行的范围是Sheets("archief").Range("B2:HT2")。我要查找的日期的输入是Sheets("Rekenblad").Range("B29")

在日期行中找到单元格后,我需要选择其下方的单元格 1。所以比如我要找的日期是B2,那么我需要选择B3

之后我想粘贴之前复制的内容。

如何使用 VBA 做到这一点?这是我目前尝试过的代码。

Sub FindCell()
    Dim RowDates As Range
    Dim InputCell As Range
    Set InputCell = Sheets("Rekenblad").Range("B29")
    Set RowDates = Sheets("archief").Range("B2:HT2").Find(What:=InputCell, _
                                                    SearchOrder:=xlByColumns).Select
End Sub

【问题讨论】:

  • 欢迎来到 Stack Overflow。请注意,由于这不是免费的代码编写服务,因此您有必要展示到目前为止您尝试过的内容以及遇到的问题或错误(通过展示您的代码),或者至少展示您的研究内容和您所做的努力制成。否则,它只是要求我们为您完成所有工作。阅读How to Ask 可能会帮助您改进您的问题。
  • 请对 Range.FindApplication.WorksheetFunction.Match 进行一些研究,并展示您解决问题的方法。
  • 谢谢!我对这个 VBA 很陌生,我已经寻找了一些解决方案,但我还没有找到任何解决方案。这是我到目前为止所尝试的:Sub FindCell() Dim RowDates As Range Dim InputCell As Range Set InputCell = Sheets("Rekenblad").Range("B29") Set RowDates = Sheets("archief").Range("B2:HT2").Find(What:=InputCell, SearchOrder:=xlByColumns).Select End Sub
  • 请始终将您的代码放入问题本身edit。因为在 cmets 中它们不是真正可读的。还有你的代码出了什么问题?
  • 谢谢!我是这个论坛的新手,所以感谢您告诉我!

标签: excel vba


【解决方案1】:

您几乎拥有它,您只需要删除.Select

您可能会从阅读中受益 How to avoid using Select in Excel VBA.

Sub FindCell()
    Dim InputCell As Range
    Set InputCell = Sheets("Rekenblad").Range("B29")
    
    Dim RowDates As Range
    Set RowDates = Sheets("archief").Range("B2:HT2").Find(What:=InputCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, MatchByte:=False)

    If RowDates Is Nothing Then ' check if find did find something
        MsgBox "Date not found."
        Exit Sub 'nothing was found so we need to abort
    End If
    
    Dim NextDateCell As Range
    Set NextDateCell = RowDates.Offset(RowOffset:=1) 'offset moves from RowDates one down

End Sub

除非您希望用户移动到那里,否则永远不要使用Select

使用Range.Find method 时,请确保至少指定以下参数:

每次使用此方法时都会保存LookInLookAtSearchOrderMatchByte 的设置。如果下次调用该方法时没有为这些参数指定值,则使用保存的值。设置这些参数会更改“查找”对话框中的设置,而更改“查找”对话框中的设置会更改在省略参数时使用的保存值。为避免出现问题,请在每次使用此方法时显式设置这些参数。

【讨论】:

  • 做得很好......只有一件事。建议使用.Find 的所有相关参数。 Excel 在使用 .Find 时有一个奇怪的习惯,即使用以前的设置:D
  • 我试过了,但我收到“找不到日期”的消息。 Sheets("Rekenblad").Range("B29") 中的日期与Sheets("archief").Range("G1") 中的日期相同
  • @SiddharthRout 正确,我没看到。
  • @Jacco9205 查看我的编辑。并查看.Find的参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多