Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 VBA将activesheet的名称传递给函数_Excel_Excel 2010_Vba - Fatal编程技术网

Excel VBA将activesheet的名称传递给函数

Excel VBA将activesheet的名称传递给函数,excel,excel-2010,vba,Excel,Excel 2010,Vba,我创建了一个函数来接收三个参数: 字符串数组 工作表名称 字符串数组的索引 当我编译时,我得到一个编译错误,说明: 编译错误: 预期:= 我的电话是: Sub C_Button_ImportBOM_Click() Dim strFilePathName As String Dim strFileLine As String Dim v As Variant Dim RowIndex As Long Dim mySheet As Worksheet ActiveSh

我创建了一个函数来接收三个参数:

  • 字符串数组
  • 工作表名称
  • 字符串数组的索引
当我编译时,我得到一个编译错误,说明:

编译错误: 预期:=

我的电话是:

Sub C_Button_ImportBOM_Click()

  Dim strFilePathName As String
  Dim strFileLine As String
  Dim v As Variant
  Dim RowIndex As Long
  Dim mySheet As Worksheet

  ActiveSheet.Name = "Import"

  mySheet = Worksheets("Import")

  strFilePathName = ImportFilePicker

  v = QuickRead(strFilePathName)
  For RowIndex = 0 To UBound(v)
    PopulateNewLine (v(RowIndex), mySheet, RowIndex)
  Next

End Sub
函数声明是:

Function PopulateNewLine(SourceString As String, ImportSheet As Worksheet, CurrentRow As Long)
我试了很多东西都没有用。最初,只声明并使用了第一个参数,这一切正常

非常感谢您的任何想法


Excel 2010 VBA

调用函数就像调用子例程一样,也就是说,您没有像通常使用函数那样从函数返回值并将其赋值给变量。这意味着您需要在不使用括号括住参数的情况下调用它:

PopulateNewLine v(RowIndex), mySheet, RowIndex
如果您真的没有从中返回任何内容,为了清晰起见,您可能应该将其转换为Sub:

Sub PopulateNewLine(SourceString As String, ImportSheet As Worksheet, CurrentRow As Long)
... your code here
End Sub
另一方面,您应该限定mySheet引用,正如我在评论中提到的,使用
Set
。它应该看起来像:

Set mySheet = ActiveWorkbook.Worksheets("Import")

用上面的
ActiveWorkbook
替换工作簿导入中的任何内容。

您调用函数就像调用子例程一样,也就是说,您不会像通常使用函数那样从函数返回值并将其赋值给变量。这意味着您需要在不使用括号括住参数的情况下调用它:

PopulateNewLine v(RowIndex), mySheet, RowIndex
如果您真的没有从中返回任何内容,为了清晰起见,您可能应该将其转换为Sub:

Sub PopulateNewLine(SourceString As String, ImportSheet As Worksheet, CurrentRow As Long)
... your code here
End Sub
另一方面,您应该限定mySheet引用,正如我在评论中提到的,使用
Set
。它应该看起来像:

Set mySheet = ActiveWorkbook.Worksheets("Import")

用上面的
ActiveWorkbook
替换任何工作簿导入。

我不确定您的编译错误,但您需要使用
Set
,如
Set mySheet=Worksheets(“导入”)
。是不是PopulateNewLine(v(RowIndex)、mySheet、RowIndex)上的错误?道格,谢谢你回复我。是的,错误在该函数调用上。我不确定您的编译错误,但您需要使用
Set
,如
Set mySheet=Worksheets(“导入”)
。是不是PopulateNewLine(v(RowIndex)、mySheet、RowIndex)上的错误?道格,谢谢你回复我。是的,错误在该函数调用上。史蒂夫,谢谢,道格,我会再试一次。我确实让函数返回一个整数(成功标志),但这仍然是一个问题。。。我现在就试试。:)将其设为Sub基本上有相同的问题,但我注意到我将接收变量定义为字符串,而将发送变量定义为变量。这将问题作为另一个错误转移到我的PopulateNewLine函数中。那么,我的回答是否消除了您发布的编译错误消息?我鼓励你避免那些成为移动目标的问题。如果你修改了这个问题,你会希望确保尽可能有条理地去做。道格,这个问题与类型有关。正在将类型变量传递给类型字符串。。。不知道我怎么会错过。仍然有问题,但这些都是不同的,我会努力解决它们,然后再寻求帮助。谢谢你的光临。:)史蒂夫,不客气,但我不同意。该编译错误与不需要时使用括号调用有关,而与调用它时使用的参数无关。我复制了你的代码,得到了你发布的编译错误。当我去掉括号时,就像我回答的第二行一样,编译错误消失了。抱歉,如果这看起来有争议。通常我不会追求到这种程度,但我知道这是真的。谢谢道格,我会再试一次。我确实让函数返回一个整数(成功标志),但这仍然是一个问题。。。我现在就试试。:)将其设为Sub基本上有相同的问题,但我注意到我将接收变量定义为字符串,而将发送变量定义为变量。这将问题作为另一个错误转移到我的PopulateNewLine函数中。那么,我的回答是否消除了您发布的编译错误消息?我鼓励你避免那些成为移动目标的问题。如果你修改了这个问题,你会希望确保尽可能有条理地去做。道格,这个问题与类型有关。正在将类型变量传递给类型字符串。。。不知道我怎么会错过。仍然有问题,但这些都是不同的,我会努力解决它们,然后再寻求帮助。谢谢你的光临。:)史蒂夫,不客气,但我不同意。该编译错误与不需要时使用括号调用有关,而与调用它时使用的参数无关。我复制了你的代码,得到了你发布的编译错误。当我去掉括号时,就像我回答的第二行一样,编译错误消失了。抱歉,如果这看起来有争议。通常我不会追求到这种程度,但我知道这是真的。