gpt4 book ai didi

excel - 在函数中使用变量,还是使用函数本身?

转载 作者:行者123 更新时间:2023-12-04 21:18:47 28 4
gpt4 key购买 nike

我的代码中有这个功能:

Function get_header(ByVal rw As Range) As Scripting.Dictionary
Dim header As New Scripting.Dictionary
Dim used As Range

Set used = Range(rw.Cells(1, 1), rw.Cells(1, rw.Cells(1, rw.Columns.Count).End(xlToLeft).Column))

For Each cl In used.Cells
header.Add cl.Value, cl.Column
Next

Set get_header = header
End Function
该函数的作用是获取表头并创建列名和相应索引的字典,因此列的顺序对于其余代码并不重要。
我的问题是:是否有必要使用单独的变量来存储整个循环中的值,或者我可以
  • 全程编辑返回值(“get_header”),而不是只在末尾传递值或
  • 像这样使用 With 结构:
  • Function get_header(ByVal rw As Range) As Scripting.Dictionary
    Dim used As Range

    With rw
    Set used = Range(.Cells(1, 1), .Cells(1, .Cells(1, .Columns.Count).End(xlToLeft).Column))
    End With

    With get_header
    For Each cl In used.Cells
    .Add cl.Value, cl.Column
    Next
    End With

    End Function
    另外,为什么我应该使用这些结构中的任何一个而不是其他结构?
    感谢您的任何建议,伙计们。

    最佳答案

    想对此发表评论,但评论太长了:
    当我有一个逐步“计算”返回值的函数时,我通常更喜欢使用中间变量,原因如下(请注意,在运行时使用额外的变量是免费的,这不是问题):

  • 命名:我不喜欢为名为 getSomething 的东西赋值.
  • 在右侧使用时,它避免了“中间”值和对函数的递归调用之间的歧义:getSomething = getSomething + getSomething(p) .编译器可以处理,但我的大脑呢?没那么多。我找到 retVal = retVal + getSomething(p)清晰得多。
  • 在执行过程中遇到错误情况时,我可以轻松地执行 Exit Function无需考虑已经计算过的内容。

  • 但归根结底(这对于如果不使用 With 语句的问题也有效),有两件事很重要: (1) 哪些代码更容易阅读和理解。 (2) 哪个代码不太可能出现错误。 由于人脑的工作方式不尽相同:找到你的个人风格并坚持下去。

    关于excel - 在函数中使用变量,还是使用函数本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63563178/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com