gpt4 book ai didi

vba - 以常量为参数的函数

转载 作者:行者123 更新时间:2023-12-04 22:38:18 25 4
gpt4 key购买 nike

某些预定义的 VBA 方法和函数需要将特定常量传递给它们,例如:

Application.Calculation = xlCalculationAutomatic
.cells(i,j).End(xlUp).Row
.PpParagraphAlignment = ppAlignCenter

在这些片段中,常量是xlCalculationAutomaticxlUpppAlignCenter

当调用函数/方法并要求填充参数时,VBE Intellisense 通常会提供一个有效常量的下拉列表以供选择。

有没有办法用我自己的子程序和函数实现同样的事情?例如。在下面的例子中,参数“sRowOrCol”要求用户当前输入文字“Row”或“Col”,但是我想为用户提供一个包含例如“xlRow”和“xlCol”。

Function FindLast(ws As Worksheet, sRowOrCol As String, iColRow As Long)
If sRowOrCol = "Row" Then
FindLast = ws.Cells(ws.Rows.Count, iColRow).End(xlUp).Row
Exit Function
ElseIf sRowOrCol = "Col" Then
FindLast = ws.Cells(iColRow, ws.Columns.Count).End(xlToLeft).Column
Exit Function
Else
MsgBox "Invalid argument"
End If
End Function

最佳答案

您似乎在寻找 Enum statement .在您的情况下,它可能看起来像这样:

Enum Margin
Row
Column
End Enum

' …

Function FindLast(ws As Worksheet, margin As Margin, iColRow As Long)
If margin = Row Then

End Function

IntelliSense 将使用它,但您可能希望为您的枚举常量提供一个通用前缀(例如 mar),以便于在 IntelliSense DropDown 框中选择它们。这就是为什么xlUp 有前缀 xl。尽管我个人不太喜欢这种前缀。

关于vba - 以常量为参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55949948/

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