Как прописать в макросе адрес ячейки из другого листа
Пользователь
Сообщений: Регистрация: 03.01.2013
20.08.2021 20:52:14
Вы вообще не поняли что мне нужно, но это уже не важно, я сам методом тыка разобрался, вот как надо писать:
Код
Sub проба()
проверка True, [Лист1!B4].Value + [Лист1!C4].Value
End Sub
Изменено: - 20.08.2021 21:10:34
Как прописать в макросе адрес ячейки из другого листа
Пользователь
Сообщений: Регистрация: 03.01.2013
20.08.2021 20:44:40
вот пожалуйста для эксперимента выкладываю пример с макросом и там на листе1 в ячейке B4 задайте текущее время и к нему прибавляется + 1минута, которая уже введена в соседней ячейке C4, чтобы макрос выполнялся по времени до наступления текущего времени на 1 минуту большего. И на Листе2 нажмите на кнопку, чтобы проверить как работает макрос, он с периодичностью в 1 секунду переходит на листе2 с ячейки F6 на ячейку F7 и наоборот. И в макросах за это отвечает код:
Код
Sub проба()
проверка True, [B4].Value + [C4].Value
End Sub
Если запустить макрос "проба" на Листе1, то он будет работать, так как значения из ячеек B4 и C4 он увидит в этом листе ! Вот и проверьте свои предложенные варианты! Они не пашут! Жду очень правильного решения....
Как прописать в макросе адрес ячейки из другого листа
Пользователь
Сообщений: Регистрация: 03.01.2013
20.08.2021 20:28:53
вы пробовали для начала сами проверить работает так или нет? НЕТ так не работает! Жду другого решения.....
Изменено: - 20.08.2021 21:08:58
Как прописать в макросе адрес ячейки из другого листа
Пользователь
Сообщений: Регистрация: 03.01.2013
20.08.2021 20:11:31
У меня есть кусок макроса, который определяет какой макрос выполнить макрос1 или макрос2, и как видно из кода выполнение макроса1 происходит до суммарного времени, которое получается при сложении значений времени из ячеек D4 и D5 в активном листе, в которых введено время в формате 00:00:00
Код
Sub транслировать_видео_из_текущего_плейлиста()
If Sheets("лист1").Range("A5").Value = ЛОЖЬ Then
макрос1 True, [D4].Value + [D5].Value
Else
макрос2 False
End If
End Sub
Так вот вопрос мой такой - как мне прописать адреса ячеек D4 и D5 не из активного листа, а из другого с его названием? Т.е. я так понимаю должно быть что-то типа макрос1 True, [Лист2!D4].Value + [Лист2!D5].Value Но такой вид конечно не работает, а какой вид должен быть подскажите?
Изменено: - 20.08.2021 21:08:30
Можно ли сделать меняющееся условие для работы цикла Do/Loop?
Пользователь
Сообщений: Регистрация: 03.01.2013
14.04.2020 20:01:46
Nordheim СПАСИБО ВАМ! вот то что было нужно. вот я понимаю помощь без всяких выпендрёжей и обид детских... молодца!!!
Можно ли сделать меняющееся условие для работы цикла Do/Loop?
Пользователь
Сообщений: Регистрация: 03.01.2013
14.04.2020 15:51:23
а если я приношу свои глубочайшие извинения ?
Можно ли сделать меняющееся условие для работы цикла Do/Loop?
Пользователь
Сообщений: Регистрация: 03.01.2013
14.04.2020 15:48:47
vikttur, предложенный способ я и сам знаю, но он мне не подходит, так как код самого цикла имеет очень большой размер !!! поэтому я и хотел узнать - есть ли способ чтобы не писать 2 раза огромные коды циклов, а сразу определить по какому условию работать циклу и написать его огромный код только 1 раз !!! ну раз так нельзя, то значит буду 2 раза свой огромный цикл прописывать !!!
Изменено: - 14.04.2020 15:57:54
Можно ли сделать меняющееся условие для работы цикла Do/Loop?
Пользователь
Сообщений: Регистрация: 03.01.2013
14.04.2020 15:42:51
Цитата
vikttur написал: Вы описывали не ЗАДАЧУ, а придуманный ПУТЬ РЕШЕНИЯ какой-то ЗАДАЧИ!
а другого пути и нет для моей задачи. Так как у меня есть огромный список из ссылок на видео файлы на компьютере и также в соседнем столбце есть время продолжительности этих фалов. И мне надо их транслировать постоянно, но иногда в разных режимах: 1) я ввожу значение "1" в ячейке А5 и ввожу в ячейку D4 время окончания трансляции, после этого нажимаю на кнопку запуска трансляции и в это время из ячейки D4 цикл транслирования прекращается 2) я удаляю значение в ячейке А5, после этого нажимаю на кнопку запуска трансляции и цикл транслирования не прекращается никогда, так как время трансляции я сам по факту определяю, нажав Ctrl+Break, так как другого способа остановить бесконечный цикл нет Вот такая у меня задача. И что вам теперь это даст ?
Можно ли сделать меняющееся условие для работы цикла Do/Loop?
Пользователь
Сообщений: Регистрация: 03.01.2013
14.04.2020 15:31:20
вот задача: я её уже описывал как видно из кода - я хочу чтобы до начала цикла определялось бы условие для него! Т.е. если на листе1 в ячейке А5 введено значение "1", то цикл бы выполнялся с условием Do Until TimeValue(Now) >= Range("D4").Value (или другими словами до наступления указанного времени в ячейке D4) а если бы на листе1 в ячейке А5 было бы не введено значение "1", то цикл бы выполнялся с условием Do Until TimeValue(Now) <> TimeValue(Now) (или другими словами бесконечно, пока вручную не оставишь цикл, нажав Ctrl+Break)
и файл прикладываю для примера!!!
Можно ли сделать меняющееся условие для работы цикла Do/Loop?
Пользователь
Сообщений: Регистрация: 03.01.2013
14.04.2020 15:17:51
Цитата
vikttur написал: Вот это вообще бессмыслица - время не равно само себе:Код ? 1TimeValue(Now) <> TimeValue(Now)
ну скажите как нужно написать выбор условия для цикла когда надо работать бесконечно, а когда до указанного в ячейке времени !! а не писать что отдельно какие-то куски кода неверные. я и сам понимаю что здесь много есть ошибок и спрашиваю как надо правильно писать
Можно ли сделать меняющееся условие для работы цикла Do/Loop?
Пользователь
Сообщений: Регистрация: 03.01.2013
14.04.2020 15:15:31
Цитата
vikttur написал: go1 сразу получает булево значение (True, False), его Вы и передаете в циклSet - это присвоение объекта переменой, здесь вообще не к месту.
так вот такой код также не работает как нужно
Код
Dim go1
If Sheets("ÏÓÍÊÒ ÓÏÐÀÂËÅÍÈß").Range("A5").Value = ËÎÆÜ Then
go1 = TimeValue(Now) >= Range("D4").Value
Else
go1 = TimeValue(Now) <> TimeValue(Now)
End If
Do Until go1
Range("D12").Select
Application.Wait Time:=Now + TimeValue("00:00:01")
Range("D13").Select
Application.Wait Time:=Now + TimeValue("00:00:01")
Loop
и всегда для цикла определяется условие бесконечно работать Do Until TimeValue(Now) <> TimeValue(Now)
так что проблема всё равно не в set !!!
Изменено: - 14.04.2020 15:15:53
Можно ли сделать меняющееся условие для работы цикла Do/Loop?
Пользователь
Сообщений: Регистрация: 03.01.2013
14.04.2020 14:54:34
у меня есть следующий код цикла
Код
Sub проба()
Dim go1
If Sheets("Лист1").Range("A5").Value = 1 Then
Set go1 = TimeValue(Now) >= Range("D4").Value
Else
Set go1 = TimeValue(Now) <> TimeValue(Now)
End If
Do Until go1
Range("D12").Select
Application.Wait Time:=Now + TimeValue("00:00:01")
Range("D13").Select
Application.Wait Time:=Now + TimeValue("00:00:01")
Loop
End Sub
как видно из кода - я хочу чтобы до начала цикла определялось бы условие для него! Т.е. если на листе1 в ячейке А5 введено значение "1", то цикл бы выполнялся с условием Do Until TimeValue(Now) >= Range("D4").Value (или другими словами до наступления указанного времени в ячейке D4) а если бы на листе1 в ячейке А5 было бы не введено значение "1", то цикл бы выполнялся с условием Do Until TimeValue(Now) <> TimeValue(Now) (или другими словами бесконечно, пока вручную не оставишь цикл, нажав Ctrl+Break)
Но проблема в том, что такой код будет всегда задавать условие для цикла работать бесконечно (Do Until TimeValue(Now) <> TimeValue(Now))
Я так понимаю, что проблема кроется или в объявлении переменной Dim go1 или выборе выражения для условия окончания цикла в зависимости от значения в ячейке А5. Подскажите в чём моя проблема? Как здесь правильно будет задание переменной и определение выражения для цикла?
вставить скопированные данные из excel в окно видеоплеера или запустить видеофайлы из excel ?, как можно вставить скопированные данные из excel в окно видеоплеера или как запустить видеофайлы из excel ?
этот код открывает видеофайл, путь к которому указан в активной ячейке в excel, с помощью указанной программы Potplayer. всё решение найдено, всем спасибо!!!
и пробел в указании пути к программе между PotPlayerMini64.exe и кавычками \PotPlayerMini64.exe " - ОБЯЗАТЕЛЕН !!!! иначе не работает !!!
Изменено: - 10.04.2020 16:02:13
вставить скопированные данные из excel в окно видеоплеера или запустить видеофайлы из excel ?, как можно вставить скопированные данные из excel в окно видеоплеера или как запустить видеофайлы из excel ?
Пользователь
Сообщений: Регистрация: 03.01.2013
10.04.2020 13:59:40
прикладываю свой файл для просмотра моего кода excel. Задача такая : у меня в excel есть список видеофайлов, пути к которым указаны в отдельных ячейках. В частности сейчас пока нужно так - макрос у меня с именем "Sub поиск_и_передача_окну_видеоплеера_Potplayer_адреса_видеофайла()" будет копировать адрес к файлу из ячейки A2 и делать активным уже запущенное ранее окно видеоплеера PotPlayer и вставлять в него скопированный адрес файла путём передачи сочетания клавиш Ctrl+V. Окно плеера делается активным, но вот вставить данные не могу. А в этом видеоплеере если что по нажатию клавиш Ctrl+V вставляется путь к файлу из буфера обмена и начинается его проигрывание !
Изменено: - 10.04.2020 15:24:44
Как получить продолжительность видеофайлов из созданного списка в excel с путями к файлам?
Пользователь
Сообщений: Регистрация: 03.01.2013
10.04.2020 09:30:17
Цитата
Андрей Лящук написал: ну дык UDF должны в стандартном модуле лежать
Прикрепленные файлы проба2.xlsm (27.35 КБ)
Да спасибо, всё работает! понял свою ошибку! надо ваш код вставлять не в код листа, а в код в созданном модуле!
Изменено: - 10.04.2020 09:43:02
Как получить продолжительность видеофайлов из созданного списка в excel с путями к файлам?
Public Function GetDuration(sHref$) As Single
Dim oFile As Object
On Error Resume Next
Set oFile = GetDesktop.parsename(sHref)
GetDuration = TimeValue(oFile.Parent.getdetailsof(oFile, 27))
Set oFile = Nothing
End Function
Private Function GetDesktop()
Static Desktop As Object
If Desktop Is Nothing Then
Set Desktop = CreateObject("shell.application").Namespace(0)
End If
Set GetDesktop = Desktop
End Function
и вставил формулу в ячейку В2 =GetDuration(A2)
НО НИЧЕГО НЕ РАБОТАЕТ !! пишет ошибку в формуле #ИМЯ?
может кто-то сделать готовый вариант в excel и выложить тут, а то не сильно разбираюсь если мне отдельно какие-то кусочки пазла дают, а что куда надо вставлять ещё кроме этого я не знаю.. мне надо полностью расписать что и куда писать, а лучше как я сказал приложить файл в excel !!
Изменено: - 10.04.2020 08:49:53
Как получить продолжительность видеофайлов из созданного списка в excel с путями к файлам?
Пользователь
Сообщений: Регистрация: 03.01.2013
09.04.2020 23:30:13
на форуме я нашёл тему с решением похожей задачи, что и у меня
но там рассматривается вариант, при котором надо указывать папку на компьютере, в которой находятся нужные видеофайлы, для получения их данных. И при чём ещё и ограниченно выбираются расширения файлов ("*.avi;*.mp4;*.wmv;*.vob"), а если у меня есть и другие форматы видео, то как быть ??? Я создал и приложил свой вариант для наглядности, чтобы вы понимали как я хочу получать длительность видеофайлов.
Там создан список где указаны пути к каждому видеофайлу отдельно, типа \\Максим-пк\2- музыка\2- Клипы и концерты\- Зарубежные исполнители\The Dream Academy - Life In A Northern Town.mp4 но путь также может быть и другим, например
D:\2- музыка\2- Клипы и концерты\- Зарубежные исполнители\The Dream Academy - Life In A Northern Town.mp4
И я создал типа кнопку синюю, при нажатии на которую, выполнялся бы макрос для получения только длительности каждого видеофайла из моего списка и длительность бы вставлялась напротив пути к файлу справа в столбце В. И ещё у меня список в примере небольшой из 8 файлов, а может быть очень большим порядка 5000 файлов и мне надо чтобы макрос понимал и проверял есть ли в следующей нижней ячейке в столбце А путь к файлу, и если есть, то вставлял бы продолжительность файла, а если пути нет и ячейка пустая, то макрос бы перестал работать и остановился бы.
Для понятия или сравнения я скопировал из вышеуказанной темы на форуме один рабочий вариант получения нескольких данных файлов из указанной папки. Но мне не нужно указывать папку с файлами, у меня уже есть созданный список файлов и мне нужно узнать только продолжительность это я так понял данные в коде objFolder.GetDetailsOf(File, 27)
Изменено: - 09.04.2020 23:40:56
Определить, сколько строк останется на последней странице после добавления новых строк на листе, макросом
Пользователь
Сообщений: Регистрация: 03.01.2013
29.11.2016 12:56:15
Код
Sub PagesCount()
With ActiveSheet
.Range("L2") = .HPageBreaks.Count + 1
fRow = .HPageBreaks(.HPageBreaks.Count).Location.Cells.Row
lRow = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range("L3") = lRow - fRow + 1
End With
End Sub
Да нормально, но есть один минус, если скрываем к примеру все строки на последней странице, то макрос выдает ошибку !!!!!! Можно подкорректировать с учетом этого ?! Я забыл добавить, что некоторые строки я могу не удалять а еще и скрывать !!!
Получается у меня 1 страница и на ней 37 строк, но макрос не хочет эти данные давать !!!!
Определить, сколько строк останется на последней странице после добавления новых строк на листе, макросом
Пользователь
Сообщений: Регистрация: 03.01.2013
29.11.2016 10:50:10
Да нормально, но есть один минус, если скрываем к примеру все строки на последней странице, то макрос выдает ошибку !!!!!! Можно подкорректировать с учетом этого ?! Я забыл добавить, что некоторые строки я могу не удалять а еще и скрывать !!!
Получается у меня 1 страница и на ней 37 строк, но макрос не хочет эти данные давать !!!!
Изменено: - 29.11.2016 11:54:12
Определить, сколько строк останется на последней странице после добавления новых строк на листе, макросом
Пользователь
Сообщений: Регистрация: 03.01.2013
29.11.2016 10:12:51
У меня есть лист, где я удаляю старые строки или добавляю новые строки с данными по мере поступления данных. После этого на листе происходит изменение положения разрыва страниц и в итоге кол-во страниц может быть 1шт, а может быть и более. Для наглядности я прикладываю файл с примером..... Так вот мне нужно чтобы после добавления или удаления строк я нажимал на кнопку и макрос определял и вводил в ячейки следующие данные : на листе в ячейке L2 - сколько стало страниц, а в ячейке L3 - сколько строк на последней странице (если кол-во страниц более 1 шт / или же на первой странице, если кол-во страниц 1шт). ПОМОГИТЕ, ПОДСКАЖИТЕ команды макроса как это можно сделать ?!?!?!?!
не работает команда Application.SendKeys "{NUMPAD5}"
Пользователь
Сообщений: Регистрация: 03.01.2013
29.06.2015 17:45:39
здесь мне нужно видеть что я ввёл в ячейке !
не работает команда Application.SendKeys "{NUMPAD5}"
Пользователь
Сообщений: Регистрация: 03.01.2013
29.06.2015 16:20:14
я хочу видеть что в ячейке ввелось в итоге, если Numlock был включен, то в ячейке введется цифра 5, а если Numlock был выключен, то в ячейке ничего не введется и от этого уже дальше отталкиваться !
не работает команда Application.SendKeys "{NUMPAD5}"
Пользователь
Сообщений: Регистрация: 03.01.2013
29.06.2015 13:20:55
нет это не то !!!!! это вы таким образом просто пишите символ 5 в ячейку, а мне нужно чтобы нажималась именно клавиша "5" справа где стрелки !!! (т.е. На numpad)
Макрос проверки состояния включён или нет NumLock, макрос не работает
Пользователь
Сообщений: Регистрация: 03.01.2013
29.06.2015 13:19:20
как сделать проверку включен или нет NumLock ????????
Макрос проверки состояния включён или нет NumLock, макрос не работает
Пользователь
Сообщений: Регистрация: 03.01.2013
29.06.2015 12:58:46
Цитата
Слэн написал: написал как понял сам, так? ps ничего не проверяет, просто включает намлук
Прикрепленные файлы 111.xlsm (16.6 КБ)
Изменено: Слэн - 29 Июн 2015 11:26:02
Живи и дай жить..
не подходит - включать я и сам знаю как NumLock, и если Numlock был включен до срабатывания макроса, то после его выполнения Numlock наоборот выключается, т.е. команда работает не только как включение, но и как выключение в случае повторного выполнения, А мне нужно именно включать Numlock если он при этом не включен, а как это проверить незнаю !!!!! Может есть какая команда работающая только на включение Numlock и повторно не выключающая его ?????
не работает команда Application.SendKeys "{NUMPAD5}"
Пользователь
Сообщений: Регистрация: 03.01.2013
29.06.2015 12:55:04
ХОРОШО !!!!!!
не работает команда Application.SendKeys "{NUMPAD5}"
Пользователь
Сообщений: Регистрация: 03.01.2013
29.06.2015 12:52:35
я к людям обращаюсь за помощью - пока её не получил, что ещё надо-то ???? как кто-то поможет я его ОЧЕНЬ ОТБЛАГОДАРЮ !!!!!, что мне теперь на каждый неподходящий совет отвечать неподходит ????
не работает команда Application.SendKeys "{NUMPAD5}"
Пользователь
Сообщений: Регистрация: 03.01.2013
29.06.2015 12:45:09
А насчет ответить - нечего отвечать-то пока ничего толкового не сказали, а что сказали не подходит, это я и сам уже все делал !!!!!!!!
не работает команда Application.SendKeys "{NUMPAD5}"
Пользователь
Сообщений: Регистрация: 03.01.2013
29.06.2015 12:38:07
прикладываю файл для наглядности, где после нажатия на кнопку выделяется ячейка Н6 и нажимается клавиша numpad5 (т.е. это клавиша справа, где цифры и стрелки, которые завязаны на NumLock), так вот почему не работает команда Application.SendKeys "{NUMPAD5}" ????????
Макрос проверки состояния включён или нет NumLock, макрос не работает