【问题标题】:Find Date variable within a row and return Column VBA在一行中查找日期变量并返回列 VBA
【发布时间】:2015-07-02 13:55:50
【问题描述】:

我希望在一行中找到一个变量并返回列引用。到目前为止我写的代码是;

Dim VarianceDate As String
VarianceDate = Sheets("Summary").Range("C12").Value


Rows("6").Find(What:=VarianceDate, After:=ActiveCell, LookIn:=xlFormulas _
      , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
      MatchCase:=False, SearchFormat:=False).Activate

TargetCol = ActiveCell.Column

在此示例中,差异日期是 01/06/2015,但是当我进入 VBA 中的代码时,它什么也不返回。除非我手动搜索它会找到正确的单元格。

最终我想使用 TargetCol 参考来帮助我将正确的数据提取到另一个工作簿中。

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 你是说VarianceDate = 什么都没有?你可以试试这样的行:Debug.Print VarianceDate 来确认这一点吗?如果是这样,您需要确保您的工作表和范围引用是正确的。
  • 不,variancedate = 01/06/2015 我认为问题出在代码的“查找”部分。因为这不返回任何内容,即它不执行任何操作。

标签: vba excel find


【解决方案1】:

您需要提到搜索词是一个日期,并且如果活动单元格不在您的查找范围内,则会由于包含 After:=ActiveCell 而引发错误

试试下面的代码

Sub FindDateCol()

    Dim VarianceDate As String: VarianceDate = Sheets("Summary").Range("C12").Value

    Dim TargetCell As Range, TargetCol As Integer
    Set TargetCell = Rows("6").Find(What:=CDate(VarianceDate), LookIn:=xlFormulas, LookAt:=xlPart)
    If Not TargetCell Is Nothing Then TargetCol = TargetCell.Column

    MsgBox TargetCol

End Sub

【讨论】:

  • 此代码不会返回所需的结果,因为ActiveCell 当前将是代码运行之前选择的任何单元格。作为一般规则,我会远离使用ActiveCell。而是直接说Msgbox TargetCell.Column
  • 是的 - 复制和粘贴错误。我通常也不使用 ActiveCell。感谢您的错字位置
猜你喜欢
  • 2021-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
相关资源
最近更新 更多