首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用.Evaluate()设置变量

如何使用.Evaluate()设置变量
EN

Stack Overflow用户
提问于 2019-05-22 17:46:19
回答 2查看 146关注 0票数 0

我想在excel中的列中找到填充的第n行,当我在实际的电子表格中测试它时,我有一个公式可以工作。但是我想使用.Evaluate()将这个值设置为宏中的一个变量。

在我说Dim firstRow As LongfirstRow = 0之后

在我说完之后:

firstRow = ActiveWorksheet.Evaluate("SMALL(IF($K:$K<>"", ROW($K:$K) - ROW($K$1) + 1), 2)")

firstRow仍然设置为0。

如何使变量等于公式计算的值?

我尝试在评估之后添加.Select,尝试将firstRow更改为Variant,但这些都没有工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-22 18:03:43

首先是ActiveSheet,其次是双倍的"

代码语言:javascript
复制
firstRow = Activesheet.Evaluate("SMALL(IF($K:$K<>"""", ROW($K:$K) - ROW($K$1) + 1), 2)")

备注:

  1. 不需要包含完整列引用的- ROW($K$1) + 1
  2. 除非绝对需要,否则不要使用On Error Resume Next。然后尽快用On Error Goto 0重新打开错误捕获,以捕获错误,以便处理这些错误。
票数 2
EN

Stack Overflow用户

发布于 2019-05-22 18:12:20

一般来说,使用整列参考文献的评价方法是很费钱的。我知道使用一行代码通常很有诱惑力,但这通常只会降低性能。为了完成同样的任务,我建议使用Range.Find方法,这样就不会那么容易出错了:

代码语言:javascript
复制
Sub RangeFindMethod()

    Dim rFind As Range
    Dim firstRow As Long

    With ActiveSheet.Columns("K")
        Set rFind = .Find("*", .Cells(.Cells.Count), xlValues, xlWhole, , xlNext)
        If Not rFind Is Nothing Then
            Set rFind = .FindNext(rFind)
            firstRow = rFind.Row
        Else
            firstRow = 1
        End If
    End With

    MsgBox firstRow

End Sub
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56262327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档