如何在VBA中链接2个子过程

时间:2018-12-06 16:33:29

标签: excel excel-vba

我希望能够使用 VBA 代码执行以下操作:

  1. 首先突出显示列中的所有非空单元格
  2. 然后用一个单元格中的两行内容替换那些非空单元格。

但是,当我运行代码时,只有功能UseLineFeedCharacter在起作用,并且它将所有单元格替换为新内容。

我不知道是否是因为我没有将这两个子过程链接在一起。谢谢您的帮助!!! 我的代码是这样的:

Sub UseLinefeedCharacter()
    Dim str  As String
    str = "Line 1" & vbLf & "Line 2" & vbLf & "Line 3"
    With [a1]
        .Value = str
        .Columns.AutoFit
        .Rows.AutoFit
    End With
End Sub

Sub qwerty()
Dim rng As Range, r As Range, rSel As Range

Set rng = Range("B2:C7")
Set rSel = Nothing

For Each r In rng
    If r.Value <> "" Then
        If rSel Is Nothing Then
            Set rSel = r
        Else
            Set rSel = Union(rSel, r)
        End If
    End If
Next r
If Not rSel Is Nothing Then rSel.Select
End Sub

1 个答案:

答案 0 :(得分:1)

有几种方法可以完成此任务。

您可以创建另一个调用这两个过程的例程:

Sub Main
    UseLinefeedCharacter
    qwerty
End Sub

您将只运行Main,或者您可以从第一个Sub调用另一个Sub。

Sub UseLinefeedCharacter()
    Dim str  As String
    str = "Line 1" & vbLf & "Line 2" & vbLf & "Line 3"
    With [a1]
        .Value = str
        .Columns.AutoFit
        .Rows.AutoFit
    End With
    qwerty      '<-- Called qwerty sub
End Sub

这显然取决于每个子程序的范围。如果其中一个位于另一个模块中并且是Private Sub,则此方法将无效。