Когда при вызове подпрограммы передается диапазон, диапазон теряется в процессе.
У меня есть два модуля:
В модуле электронной почты у меня есть этот подраздел:
Sub Send_Email(Type, MSG, operation, Optional RangeB As Range, Optional txtpath)
Параметр «Тип» имеет значение 1 или 2.
Если я поставлю 1, подпрограмма отправит электронное письмо с файлом .txt в качестве вложения. И если я поставлю 2, подпрограмма поместит диапазон в тело электронной почты. Вот почему и RangeB, и txtpath являются необязательными параметрами.
Приставка работает нормально.
Но когда я помещаю диапазон в качестве параметра, RangeB не может быть выбран.
«RangeB.Select» -> ОШИБКА (не удалось выбрать метод класса диапазона)
Я пробовал вызывать сабвуфер двумя разными способами:
Call Send_Email(2, var_MSG, var_Op, Range("RangeBalko"))
Call Send_Email(2, var_MSG, var_Op, Templates.Range("RangeBalko"))
Шаблоны -> ThisWorkbook.Sheets("Шаблоны")
Кто-то знает, как решить эту проблему?
С уважением!!
Спасибо, чувак, я проверю эту ссылку.
Это помогает? Диапазон с одной ячейкой получает «MsgBox», а диапазоны с несколькими ячейками выбираются.
Sub test()
Cells(1, 1) = "Hello"
ActiveWorkbook.Names.Add "rng1", "=$C$3:$D$4"
Call SendEmail(Range("a1"), Range("a1:b2"), Range("rng1"))
End Sub
Sub SendEmail(Optional rangeA As Range, Optional rangeB As Range, Optional rangeC As Range)
MsgBox rangeA.Value
rangeB.Select ' this can be done without "selecting": rangeB.delete
Selection.Delete
rangeC.Select ' if you must select
End Sub
Я переключил Range("RangeBalko") на Range("A1:b15"). И работал.
для выбора диапазона лист должен быть активен. Возможно, вам придется сначала активировать его, но в 99% случаев
.Select
не требуется, и простое использование правильных ссылок устраняет необходимость. См.: stackoverflow.com/questions/10714251/…