Как связать 2 подпроцедуры в VBA - PullRequest
0 голосов
/ 06 декабря 2018

Я хочу иметь возможность использовать 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 голосов
/ 06 декабря 2018

Есть несколько способов выполнить эту задачу.

Вы можете создать другую подпрограмму, которая вызывает обе процедуры:

Sub Main
    UseLinefeedCharacter
    qwerty
End Sub

, которую вы просто запустите Main, или вы можетепросто вызовите другой 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, это не будет работать.

...