Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
При переходе с формы на лист не срабатывает активация листа
 
Проверил. Личной книги макросов нет совсем
При переходе с формы на лист не срабатывает активация листа
 
Попробовал запустить еще на двух компьютерах. На обоих работает корректно. На моем - нет.

Подскажите, это проблема в Excel или у него есть какие-либо настройки, которые можно подкрутить?

Очень не хотелось бы переустанавливать Excel.
При переходе с формы на лист не срабатывает активация листа
 
Чтобы воспроизвести ситуацию, надо на форме, под списком получателей кликнуть на надпись "Редактировать список" и на открывшимся листе написать что-либо в ячейках бежевого цвета. И написанный текст отобразиться в одноименной ячейки на листе, с которого была запущена форма  
При переходе с формы на лист не срабатывает активация листа
 
Пробовал почистить форму от всего лишнего - остался только переход на лист. Удалил весь код, не касающийся этого перехода. Ничего не изменилось

Файл прикрепил

P.S. форма запускается двойным кликом по ячейки А1
Изменено: Kulkijalle - 03.05.2023 13:13:13
При переходе с формы на лист не срабатывает активация листа
 
Добрый день, уважаемые форумчане.
Есть книга с десятками листов, среди которых один скрытый (лист с данными). С любого листа книги пользователем запускается форма. При инициализации формы, в ее TextBox'ы и CheckBox'ы загружаются данные со скрытого листа. При необходимости заменить данные на скрытом листе, с формы реализован переход на этот лист кодом:
Код
Private Sub Label1_Click()
    Unload UserForm1
    With ActiveWorkbook.Sheets("данные")
        .Visible = True
        .Activate
    End With
    MsgBox ActiveSheet.Name   'лист "данные" действительно становиться активным
End Sub
И вот тут начинаются непонятные мне вещи. Что бы я не писал в ячейках листа "данные", это появляется в одноименных ячейках листа, с которого была запущена форма. Причем выглядит это так: например, пишу в ячейку А1 слово "да" - оно отображается ТОЛЬКО в ячейке (в строке формул пусто). Перехожу на лист, с которого запустил форму - там в ячейке А1 написано "да". Возвращаюсь обратно на лист "данные" - в ячейке А1 слово "да" пропало.

С другой стороны, если после того, как выше указанным кодом перешел на лист "данные", а после в ручную (мышкой) кликнул на вкладку любого другого листа и обратно - все работает в штатном режиме.
Думал что лист "данные" не активируется, но нет, MsgBox ActiveSheet.Name говорит, что он активен.

На форумах ответа не нашел, всю голову сломал. Почему так происходит, что я упускаю?

Почистил форму от всего лишнего - остался только переход на лист. Удалил весь код, не касающийся этого перехода. Ничего не изменилось
Изменено: Kulkijalle - 03.05.2023 12:14:42 (дополнение)
Не получается добавить несколько получателей SendMail
 
Спасибо, вариант через split попробовал - все работает. Буду использовать split.


Но все-таки хотелось бы разобраться с array. Почему, строка
Код
ActiveWorkbook.SendMail Array("name1@zzz.com", "name2@zzz.com", "name3@zzz.com")

работает без проблем, а вариант написания
Код
    list = """name1@zzz.com"", ""name2@zzz.com"", ""name3@zzz.com"""
    Debug.Print list    '- тут видно, что значение переменной имеет вид:  "name1@zzz.com", "name2@zzz.com", "name3@zzz.com"
    ActiveWorkbook.SendMail Array(list)
не работает?  Вылетает ошибка 1004: "в списке адресатов указано неизвестное имя. Введите допустимое имя и попробуйте еще раз"

Как должна выглядеть строка с перечислением адресов, записываемая в переменную list, чтобы код работал без ошибки?

Поиграл с кавычками, перебрал все возможные варианты - вылетает та  же ошибка.
Где я не прав?
Изменено: Kulkijalle - 23.12.2022 18:09:42
Не получается добавить несколько получателей SendMail
 
Цитата
Этот код
работает?
Да, этот работает. Адреса прописаны в строчке. Но, необходимо формировать список автоматически, по условию. Поэтому использую переменную.
Прикладываю свой пример.
Не получается добавить несколько получателей SendMail
 
В коде, в комментарии написал рабочую строку. Выглядит так:

ActiveWorkbook.SendMail Array("name1@gmail.com", "name2@gmail.com", "name3@gmail.com")

Причем, если "," заменить на ";" - вылетает ошибка

MsgBox перед строкой показывает, в переменно list строчка имеет нужный формат, а при подстановки в массив - не работает
Не получается добавить несколько получателей SendMail
 
Здравствуйте, форумчане.
Помогите, пожалуйста. У меня возник затык с методом SendMail объекта Workbook. Точнее с синтаксисом.
Фрагмент кода с описанием:
Код
    'Отправка на почту. Отправляем черех Оутлук. Тема - название файла
    If mail = "да" Then
        MsgBox list   'в данном месте программы переменная "list" имеет вид: "name1@gmail.com", "name2@gmail.com", "name3@gmail.com"

       'так должна выглядеть строка, т.е. при таком написании письмо отправляется адресатам без ошибок:
       'ActiveWorkbook.SendMail Array("name1@gmail.com", "name2@gmail.com", "name3@gmail.com")

       'если в строку вставить переменную, то ничего не происходит
        ActiveWorkbook.SendMail Array(list)    
        ActiveWorkbook.Close False
    End If

В случае, если все адреса прописаны в строку вручную, то письмо отправляется. Если вставляю переменную, то не отправляется, при этом программа завершает работу не выдавая ошибок.

Подскажите, как, в каком виде необходимо вставить переменную, чтобы код был рабочим?

VBA как вставить в ячейку формулу с переменной
 
Казанский, спасибо.
Все заработало.
VBA как вставить в ячейку формулу с переменной
 
Друзья, помогите разобраться.
Новую тему создавать не стал. Вроде бы моя проблема подходит под эту тему.
Есть кнопка на некой форме, по клику на которую в ячейку вставляется формула (таймер). Весь код работает, но есть проблема с синтаксисом свойства Formula.
В ячейке необходимо получить формулу вида: "=43578,6860069444-ТДАТА()". Пробовал несколько вариантов записи. Они работают только в том случае, когда перед знаком "=" поставить пробел. Но, тогда в ячейке формула отображается в виде текста, и приходиться в ручную лезть в ячейку и удалять этот пробел.

Варианты написания строки кода с комментариями:
   Selection.FormulaR1C1 = "=" & CDbl(time3) & "-ТДАТА()" 'выдает ошибку 1004"
   Selection.FormulaR1C1 = " =" & CDbl(time3) & "-ТДАТА()" 'Ошибку не выдает, но в формулу перед знаком "=" пишет пробел, который необходимо удалить вручную.
   Selection.FormulaR1C1 = "=-ТДАТА()+" & CDbl(time3) 'пробовал поменять слагаемые местами. Все равно, без пробела перед знаком "=" выдает ошибку.
Страницы: 1
Наверх