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 将语句转换为函数 我正处于切换我的代码从使用.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)

最恰当(基于@BigBen非常正确的评论):

最恰当(基于@BigBen非常正确的评论):


不幸的是,
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的
,最后是
inside
TestFunction
。也就是说,我强烈推荐阅读。这很有意义,感谢大家的回复!此外,我还阅读了(谷歌搜索)最后一个
TestFunction
实际使用了
With…End With
。但是我想你实际上想要像
Function TestFunction(ws-as-Worksheet).
这样的东西,然后可能是一个带有ws的
,最后是
inside
TestFunction
。也就是说,我强烈推荐阅读。这很有意义,感谢大家的回复!此外,我还读到了(还有谷歌搜索)