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函数中。那么,我的回答是否消除了您发布的编译错误消息?我鼓励你避免那些成为移动目标的问题。如果你修改了这个问题,你会希望确保尽可能有条理地去做。道格,这个问题与类型有关。正在将类型变量传递给类型字符串。。。不知道我怎么会错过。仍然有问题,但这些都是不同的,我会努力解决它们,然后再寻求帮助。谢谢你的光临。:)史蒂夫,不客气,但我不同意。该编译错误与不需要时使用括号调用有关,而与调用它时使用的参数无关。我复制了你的代码,得到了你发布的编译错误。当我去掉括号时,就像我回答的第二行一样,编译错误消失了。抱歉,如果这看起来有争议。通常我不会追求到这种程度,但我知道这是真的。