Excel 将语句转换为函数 我正处于切换我的代码从使用.Active和.select到Internet推荐的更可靠的过程中。我想知道with语句的功能,以及它们是否遵循已创建的函数 '---Which way is more proper? '1. Sub TestCase() With ThisWorkbook.Worksheets("TestWorksheet") TestFunction() End With End Sub Function TestFunction()As Integer Dim I As Integer I = .cells(1,1) End function '--2. Sub TestCase() With ThisWorkbook.Worksheets("TestWorksheet") TestFunction() End With End Sub Function TestFunction()As Integer Dim I As Integer With ThisWorkbook.Worksheets("TestWorksheet") I = .cells(1,1) End With End function
最恰当(基于@BigBen非常正确的评论): 最恰当(基于@BigBen非常正确的评论):Excel 将语句转换为函数 我正处于切换我的代码从使用.Active和.select到Internet推荐的更可靠的过程中。我想知道with语句的功能,以及它们是否遵循已创建的函数 '---Which way is more proper? '1. Sub TestCase() With ThisWorkbook.Worksheets("TestWorksheet") TestFunction() End With End Sub Function TestFunction()As Integer Dim I As Integer I = .cells(1,1) End function '--2. Sub TestCase() With ThisWorkbook.Worksheets("TestWorksheet") TestFunction() End With End Sub Function TestFunction()As Integer Dim I As Integer With ThisWorkbook.Worksheets("TestWorksheet") I = .cells(1,1) End With End function,excel,vba,Excel,Vba,最恰当(基于@BigBen非常正确的评论): 最恰当(基于@BigBen非常正确的评论): 不幸的是,With语句不遵循调用的函数。对于该功能,您需要向该函数传递一个参数。下面是一个以有效方式复制提供的psuedo代码的示例: Sub TestCase() MsgBox TestFunction(ThisWorkbook.Worksheets("TestWorksheet")) End Sub Function TestFunction(ByRef ws As Worksheet)
不幸的是,
With
语句不遵循调用的函数。对于该功能,您需要向该函数传递一个参数。下面是一个以有效方式复制提供的psuedo代码的示例:
Sub TestCase()
MsgBox TestFunction(ThisWorkbook.Worksheets("TestWorksheet"))
End Sub
Function TestFunction(ByRef ws As Worksheet) As Double
With ws
TestFunction = Val(.Cells(1, 1).Value)
End With
End Function
请注意,Sub正在调用函数并传递作为工作表对象的参数。然后在函数中,您可以对传递的参数使用
With
语句。不幸的是,With
语句不遵循调用的函数。对于该功能,您需要向该函数传递一个参数。下面是一个以有效方式复制提供的psuedo代码的示例:
Sub TestCase()
MsgBox TestFunction(ThisWorkbook.Worksheets("TestWorksheet"))
End Sub
Function TestFunction(ByRef ws As Worksheet) As Double
With ws
TestFunction = Val(.Cells(1, 1).Value)
End With
End Function
请注意,Sub正在调用函数并传递作为工作表对象的参数。然后在函数中,您可以对传递的参数使用
With
语句。只有最后一个TestFunction
才正确地使用With…End With
。但是我想你实际上想要像Function TestFunction(ws-as-Worksheet).
这样的东西,然后可能是一个带有ws的,最后是insideTestFunction
。也就是说,我强烈推荐阅读。这很有意义,感谢大家的回复!此外,我还阅读了(谷歌搜索)最后一个TestFunction
实际使用了With…End With
。但是我想你实际上想要像Function TestFunction(ws-as-Worksheet).
这样的东西,然后可能是一个带有ws的,最后是insideTestFunction
。也就是说,我强烈推荐阅读。这很有意义,感谢大家的回复!此外,我还读到了(还有谷歌搜索)