首页 > 解决方案 > 如何在 VBA 中链接 2 个子程序

问题描述

我希望能够使用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

标签: excelvba

解决方案


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

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

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,那么这将不起作用。


推荐阅读