Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在宏中传递参数?_Excel_Vba - Fatal编程技术网

Excel 如何在宏中传递参数?

Excel 如何在宏中传递参数?,excel,vba,Excel,Vba,我打电话给下面的职能部门 Dim SheetName As String Dim FirstName As String, LastName As String FirstName = "Patricia " LastName = "Katts" SheetName = GetFullName(FirstName, LastName) Private Function GetFullName$(First As String, Last As String) Dim FName As Str

我打电话给下面的职能部门

Dim SheetName As String
Dim FirstName As String, LastName As String
FirstName = "Patricia "
LastName = "Katts"
SheetName = GetFullName(FirstName, LastName)


Private Function GetFullName$(First As String, Last As String)
Dim FName As String
Sheets.Add
ActiveSheet.Name = _
WorksheetFunction.Text(FName)
FName = First & Last    
GetFullName = FName
End Function

但我得到的错误是编译错误:参数不是可选的。这段代码有什么问题。我不明白。

这里缺少一个参数:
WorksheetFunction.Text(值、格式和文本)

但是您不需要工作表函数,可以使用
ActiveSheet.Name=fName
,但要注意更改操作顺序。它将按当前顺序计算为
vbNullString

这应该很好:

Sheets.Add
FName = First & Last    
ActiveSheet.Name = FName
GetFullName = FName
您可能期望
.Text
做一些不该做的事情。您可能希望返回工作表,在公式栏中键入“=text”(),然后阅读工具提示

我不确定您的示例的顶部发生了什么。您在函数中接收到的参数很好,但您没有从任何地方传递它。也许我只是被您的格式弄糊涂了

它们必须位于子对象、函数或属性内部,并且不能像您拥有的那样处于打开状态

Dim SheetName As String
Dim FirstName As String, LastName As String
FirstName = "Patricia "
LastName = "Katts"
SheetName = GetFullName(FirstName, LastName)
像这样的

Sub PassingToFunction()

Dim SheetName As String
Dim FirstName As String, LastName As String
FirstName = "Patricia "
LastName = "Katts"
SheetName = GetFullName(FirstName, LastName)

End Sub
我真的复制并粘贴了你的例子。做了我建议的编辑,效果很好

Sub WorksJustFine()
    Dim SheetName As String
    Dim FirstName As String, LastName As String
    FirstName = "Patricia "
    LastName = "Katts"
    SheetName = GetFullName(FirstName, LastName)
End Sub

Private Function GetFullName$(First As String, Last As String)
    Dim FName As String
    Sheets.Add
    FName = First & Last
    ActiveSheet.Name = FName
    GetFullName = FName
End Function

您正在做一些未被解释的事情。

此处缺少一个参数:
工作表函数.Text(值、格式\u文本)

但是您不需要工作表函数,可以使用
ActiveSheet.Name=fName
,但要注意更改操作顺序。它将按当前顺序计算为
vbNullString

这应该很好:

Sheets.Add
FName = First & Last    
ActiveSheet.Name = FName
GetFullName = FName
您可能希望
.Text
做一些不该做的事情。您可能希望返回工作表,在公式栏中键入“=Text”(),然后阅读工具提示

我不确定您的示例的顶部发生了什么。您在函数中接收到的参数很好,但您没有从任何地方传递它。也许我只是被您的格式弄糊涂了

它们必须位于子对象、函数或属性内部,并且不能像您拥有的那样处于打开状态

Dim SheetName As String
Dim FirstName As String, LastName As String
FirstName = "Patricia "
LastName = "Katts"
SheetName = GetFullName(FirstName, LastName)
像这样的

Sub PassingToFunction()

Dim SheetName As String
Dim FirstName As String, LastName As String
FirstName = "Patricia "
LastName = "Katts"
SheetName = GetFullName(FirstName, LastName)

End Sub
我真的复制并粘贴了你的例子。做了我建议的编辑,效果很好

Sub WorksJustFine()
    Dim SheetName As String
    Dim FirstName As String, LastName As String
    FirstName = "Patricia "
    LastName = "Katts"
    SheetName = GetFullName(FirstName, LastName)
End Sub

Private Function GetFullName$(First As String, Last As String)
    Dim FName As String
    Sheets.Add
    FName = First & Last
    ActiveSheet.Name = FName
    GetFullName = FName
End Function

您正在做一些没有被解释的事情。

仍然是相同的问题,当得到该问题时,哪一行突出显示?函数名Private function GetFullName$(第一个作为字符串,最后一个作为字符串)非常好,很高兴听到!仍然是相同的问题,当得到该问题时,哪一行突出显示?函数名Private function GetFullName$(第一个作为字符串,最后一个作为字符串)很好,很高兴听到这个消息!尝试用简单的
FName
替换
worksheetfunction.text(FName)
。分配字符串时,不需要调用函数即可。尝试替换
worksheetfunction.text(FName)
只需使用
FName
。分配字符串时,不需要调用函数即可。