首页 > 解决方案 > 在另一个 Sub 中编辑一个 Sub

问题描述

无法弄清楚如何从另一个子中编辑子。我试过这个:

Sub Sub1()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet2")

    ws.Range("A1").Value = "Useless"
End Sub

Sub Sub2()
    Dim test as string
    test = ThisWorkbook.Worksheets("Sheet1").Range("B3").Value

    If test = "here" Then
        Call Sub1 
        With Sub1 
           ws.Range("A2").Value = test.Value
        End With
    End If

我收到一个expected function or variable错误,可能是因为它Sub1应该是一个函数。但是,即使将其更改为函数,Sub2尽管代码运行,仍然无法正常工作。

标签: vbaexcel

解决方案


当您尝试转换Sub1为函数时,您实际上是在正确的轨道上。您只需要使函数“返回”创建的工作表对象。这里:

Function Sub1() As Worksheet     ' Don't forget to use a different name for Sub1 (and
'                                  preferably Sub2 as well).
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet2")
    ws.Range("A1").Value = "Useless"

    Set Sub1 = ws
End Function

Sub Sub2()
    Dim test As String
    test = ThisWorkbook.Worksheets("Sheet1").Range("B3").Value

    If test = "here" Then
        With Sub1
           .Range("A2").Value = test
        End With
    End If
End Sub

显然,您需要将名称更改为Sub1反映函数功能的其他名称。

另外,请注意我使用test的不是你的test.Value,因为test它已经是一个字符串并且没有Value属性。


推荐阅读