как определить диапазон ячеек для функции конкатенации в макросе - PullRequest
0 голосов
/ 28 ноября 2018

Задачей является объединение строк перед отправкой по почте.поэтому я создал кнопку для конкатенации и электронной почты, которая работает правильно.Но тут возникает проблема, меня спросили , возможно ли показать результат (объединенный результат), как только я нажму на кнопку вместо нажатия кнопки n, выберите диапазон .

, если это таккак мне это сделать?

*, так как мне нужно отправить нескольким получателям в одном письме, что у меня не было проблемы в коде

текущий в моем Excel

Sheet1 должен показать результат ячеек Concatenate в листе 2

пример

Sheet1 A1 (К списку) адрес электронной почты1, адрес электронной почты2, адрес электронной почты3, адрес электронной почты4

Лист1 B1 (список Cc)) адрес электронной почты1, адрес электронной почты2, адрес электронной почты3, адрес электронной почты3

Sheet1 C1 (список BCC) адрес электронной почты1, адрес электронной почты2, адрес электронной почты3, адрес электронной почты4

лист2 A1 (в список) *, отображаемый в виде строк

адрес электронной почты1адрес электронной почты2 адрес электронной почты3 адрес электронной почты3 адрес электронной почты4

то же самое относится к списку CC n BCC

это мой код, который я использую

    Sub Concatenate()
    'Creates a basic CONCATENATE formula with no options
    Call Concatenate_Formula(True, False)
end sub
    Sub Concatenate_Formula(bConcat As Boolean, bOptions As Boolean)
Dim rSelected As Range
Dim c As Range
Dim sArgs As String
Dim bCol As Boolean
Dim bRow As Boolean
Dim sArgSep As String
Dim sSeparator As String
Dim rOutput As Range
Dim vbAnswer As VbMsgBoxResult
Dim lTrim As Long
Dim sTitle As String
Dim sActive As String
Dim sSheetRef As String

    'Set variables
    Set rOutput = ActiveCell
    sActive = ActiveSheet.Name
    bCol = False
    bRow = False
    sSeparator = ""
    sTitle = IIf(bConcat, "CONCATENATE", "Ampersand")

    'Prompt user to select cells for formula
    On Error Resume Next
    Set rSelected = Application.InputBox(Prompt:= _
                    "Select cells to create formula", _
                    Title:=sTitle & " Creator", Type:=8)
    On Error GoTo 0

    'Only run if cells were selected and cancel button was not pressed
    If Not rSelected Is Nothing Then

        'Set argument separator for concatenate or ampersand formula
        sArgSep = IIf(bConcat, ",", "&")

        'Prompt user for absolute ref and separator options
        If bOptions Then

            vbAnswer = MsgBox("Columns Absolute? $A1", vbYesNo)
            bCol = IIf(vbAnswer = vbYes, True, False)

            vbAnswer = MsgBox("Rows Absolute? A$1", vbYesNo)
            bRow = IIf(vbAnswer = vbYes, True, False)

            sSeparator = Application.InputBox(Prompt:= _
                        "Type separator, leave blank if none.", _
                        Title:=sTitle & " separator", Type:=2)

        End If

        If rSelected.Parent.Name <> sActive Then
            sSheetRef = "'" & rSelected.Parent.Name & "'!"
        Else
            sSheetRef = ""
        End If

        'Create string of cell references
        For Each c In rSelected.Cells
            sArgs = sArgs & sSheetRef & c.Address(bRow, bCol) & sArgSep
            If sSeparator <> "" Then
                sArgs = sArgs & Chr(34) & sSeparator & Chr(34) & sArgSep
            End If
        Next

        'Trim extra argument separator and separator characters
        lTrim = IIf(sSeparator <> "", 4 + Len(sSeparator), 1)
        sArgs = Left(sArgs, Len(sArgs) - lTrim)

        'Create formula
        'Warning - you cannot undo this input
        'If undo is needed you could copy the formula string
        'to the clipboard, then paste into the activecell using Ctrl+V
        If bConcat Then
            rOutput.Formula = "=CONCATENATE(" & sArgs & ")"
        Else
            rOutput.Formula = "=" & sArgs
        End If

    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...