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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 14 След.
Изменяется Num Lock при %{down), При посыле команды Alt+Down меняется индикатор NumLock
 
Вот и я столкнулся с этой проблемой и воспользовался исследованиями предыдущих ораторов. Мои пять копеек:
Не зря предостерегают от SendKeys: мало того, что во время работы клавиатуру не тронь, так еще и мусорит, и "соседние кнопки" умудряется задеть.

Результат проверки GetKeyboardState и GetKeyState - это, насколько я понял: считается ли клавиша НАЖАТОЙ или ОТПУЩЕННОЙ!!! Именно эти состояния автор темы именовал "стабильным" и "изменчивым" (только в каком сочетании - не разобрался я)
А SENDKEYS, как я понял, передает за один раз не целое переключение: кнопка нажата и отпущена, а только его половину. Такие переключатели, как NUMLOCK совершают цикл за два целых переключения, стало быть, за 4 SENDKEYS. Вот и объяснение 4-х состояний для NUMLOCK.

Мне, кстати, не удалось добиться от  GetKeyboardState и GetKeyState ничего, кроме 0 или 1, свидетельствующих (как уважаемые форумчане точно подметили) нажата клавиша или отпущена.

В одном из этих состояний (честно, не стал досконально разбираться в каком: при нажатой, но не отпущенной или при ненажатой клавише) SENDKEYS "^©" своего соседа NUMLOCK "задевает и переключает", а в другом - не трогает! Но переключая значения, не изменяет нажатость!!!
ЕЩЁ!!!! Я проверил эффект SENDKEYS "^©" для состояния клавиши Ctrl - у нее тоже меняется состояние нажатости и однократное нажатие "мусорит" и здесь! Как-то потом техника справляется, а, может, и не справляется. В общем, мусор от SendKeys остается и там!
Время от времени обращал внимание: слетал режим INSERT, но реже и с ним разбираться не стал.

Предложенный костыль через "WScript.Shell" соседей не задевает, но мусор неотжатой кнопки Ctrl оставляет все равно.

Как обойти? Можно, конечно, проверять для NUMLOCKа GetKeyState и если он 1, то после SendKeys "^©" дважды SENDKEYS "{NUMLOCK}

Самый чистый, на мой взгляд - двукратный посыл SendKeys "^©"! Но если в коде их сделать подряд, то система не успевает реагировать и эффект получается как от одного, поэтому нужно поставить между ними ожидание (на моем компе хватило и 0,01 секунды). Это, кстати, касается и двукратного SENDKEYS "{NUMLOCK}.

Итак. на мой взгляд решение может быть таким:
Код
SendKeys "^(c)", True
    tim = Date * 24 * 3600 + Timer + 0.01
    Do
        DoEvents
    Loop While tim > (Date * 24 * 3600 + Timer)
SendKeys "^(c)", True

P.S.: еще ложечка деготка: эффект SendKeys "^©" зависит от раскладки клавиатуры!!!!!
При русской раскладке он мне вводил "c" вместо копирования выделенного!
Поэтому перед всеми SendKeys лучше запомнить текущую раскладку, сменить раскладку на латиницу, а потом вернуть ту, что была.

Прикладываю для пытливых умов файл с результатами экспериментов. Поскольку не обнаружил: как проверять "лампочку NUMLOCKа", то заносил ручками да/нет


Изменено: PerfectVam - 03.06.2022 22:47:14 (не загрузился файл)
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Количество уникальных значений по нескольким условиям в динамической таблице
 
Решение с помощью дополнительных столбцов. См. вложенный файл.

Таблицу результатов можно реализовать сводной таблицей. Только в этом случае не забывать ее обновлять!
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Парсинг сайта arbitr VBA, Не получается получить правильный отклик от сайта
 
Есть возможность использовать в VBA-коде работу через Internet Explorer. Его запросы сайтам тяжелее распознать как действия робота. Она медленнее, конечно, но вдруг поможет?
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Макросы пропадают из списка макросов
 
Еще 5 копеек.

Несколько месяцев назад, если правильно помню, помогло пересохранение в формат .xlsb и обратно. А вот сегодня не помогло. Решение lunia сработало. Спасибо за пост!!!

Чуть поэкспериментировал. Результат экспериментов следующий: вырезание-вставка помогает ТОЛЬКО если меняется список запускаемых программ. Дописывание или удаление внутри существующих ничего не меняет. Зато также помогает вставка новой программы, даже пустой.

Вывод. Видимо, время от времени при сбое сохранения теряется список возможных к запуску программ. А без лишней необходимости VBA редактор пользуется сохраненным списком. Стоит заставить VBA редактор его обновить (что и происходит при удалении какой-то программы или добавлении новой) и он без проблем заполняется и сохраняется заново...
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Фича с пятой строкой Excel, Автозаполнение формулы в 5-й строке.
 
Михаил! Ну ведь понятно же из названия параметра "Расширять форматы и формулы в диапазонах данных"!
Как программе догадаться, что введен диапазон, а не случайное совпадение? Программисты реализовали определение диапазона именно с четырех совпадений, поэтому фича начинается с пятой и дальше!
Я думаю так.
Хотя свечку не держал...
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
найти минимальное и максимальное значение по условию
 
Идея для макроса. Макрорекодер включите, сделайте сводную таблицу. Макрорекодер выключите. Останется макрос подшлифовать на предмет удаления ненужных прокруток и научить его выбирать автоматически диапазон. Можно и так оставить, но в макрос лазить придется и руками диапазон менять.
Можно после изготовления сводной таблицы скопировать весь лист и вставить как значения. Это если сама сводная таблица не нужна, а нужны именно значения.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Найти геолокацию с интервалом 1 км в радиусе 10 км от определенной геолокации, Power Query, VBA, формулы
 
Экватор 40075,696км. Длина одного градуса - разделить на 360. Далее на косинус широты Питера (59,939095град). В итоге получается  55,7631375176543.
Меридиан 20004,274км (это я так понял от полюса до полюса, т.е. 180град). Длина одного градуса - разделить на 180. В итоге получается  111,134855555556.

Далее - пропорциями получаем для 10 км:
по широте - 0,179329938112504 градуса (градус, после запятой - его десятичная часть, а не минуты)
по долготе - 0,089980771109214 градуса (десятичная координата, после запятой - его десятичная часть, а не минуты)

Вот эти значения прибавляйте-вычитайте к исходной координате нужное кол-во раз и получайте точки сетки.

Сбили меня с толку рассуждения про 10 км. Для 1 км еще на 10 разделите...
Изменено: PerfectVam - 16.09.2020 20:31:30
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Фича с пятой строкой Excel, Автозаполнение формулы в 5-й строке.
 
Это касается не только пятой, но любой, которая является продолжением диапазона. За эту функцию отвечает флажок "Расширять форматы и формулы в диапазонах данных" в параметрах на вкладке "Дополнительно". Если его снять, формула автоматом заполняться не будет.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Автозаполнение данных одной таблицы при заполнении другой., Необходимо, чтобы вторая таблица заполнялась автоматически.
 
Сводная таблица тоже не обновляется сама - надо не забывать обновлять. Или макрос делать, который по событию ее будет обновлять.
1. Вариант с формулами. Подойдет, если известно заранее число строк, которое в данных точно не будет превышено. В столбец E в примере вводится формула (например, в E6):
Код
=ЕСЛИ(ЕПУСТО(B6);"";B6)

и тиражируется на максимальное количество строк.

2. Вариант с макросом в модуль листа:

Если за один раз будет изменяться не более одной ячейки, то такой код в модуль листа:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 Then Cells(Target.Row, 5).Value = Target.Value
End Sub

Если же предусматривать копирование и пр. массовые операции с ячейками, то код сложнее:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cC As Range
Application.EnableEvents = False
    If Not (Intersect(Columns(2), Target) Is Nothing) Then
        For Each cC In Intersect(Columns(2), Target).Cells
            If cC.Column = 2 Then Cells(cC.Row, 5).Value = cC.Value
        Next cC
    End If
Application.EnableEvents = True
End Sub

Изменено: PerfectVam - 15.09.2020 19:01:09
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Нумерация пустых строк после определенного числа
 
Формула для ячейки L2 (при условии данных в столбце I):
Код
=ЕСЛИ(I3=1;1;L2+1)
и "протянуть" на нужный диапазон...
Изменено: PerfectVam - 14.09.2020 23:16:29
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Как делать так, чтобы фильтр(срезы) показывали все визуализации на текущую дату(месяц)
 
Оппа! Невнимателен был. Прошу прощения, про Power Bi пока не подскажу...
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
подсчет дней в месяце c учетом праздничных дней
 
В первую очередь, перечислить праздники в формате даты (EXCEL их воспримет как целые числа). После этого можно проверять наличие дней недели, соответствующих каждому году-месяцу и вычитать их из общей суммы). См. файл на втором (добавленном мной) листе.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Как делать так, чтобы фильтр(срезы) показывали все визуализации на текущую дату(месяц)
 
1. Макросом (при открытии книги, чтобы обновлял месяц отчета, затем освежал визуализации)
2. Формулами. В одной ячейке вставить
Код
=ВЫБОР(МЕСЯЦ(СЕГОДНЯ());"Январь";"Февраль";"Март";"Апрель";"Май";"Июнь";"Июль";"Август";"Сентябрь";"Октябрь";"Ноябрь";"Декабрь")
Но это если визуализации изменяются в зависимости от значения ячейки сами. Со сводной таблицей, например, такое не пройдет.  
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Минимальное значение > 0 отдельных ячеек одной строки
 
Вариант Сергея проходит с малюсенькой правкой:
Код
=МИН(ЕСЛИ({1;0;1;0;1;0;0;1;0;0;0;1};ЕСЛИ(A8:L8>0;A8:L8)))

формула массива

Мое уважение!!!
Изменено: PerfectVam - 25.06.2019 22:22:07
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
При редактировании TextBox на одной форме почему-то запускается обработчик CommandButton
 
Волшебник!!!
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
При редактировании TextBox на одной форме почему-то запускается обработчик CommandButton
 
Ну вот, уменьшил, данные постарался вытереть... Файл выкладываю.
В файле две формы.
ВыбКаб - работает как все. По enter переходит к следующему элементу.
Выб - по enter запускает обработку одной из кнопок и передает фокус ей. Если программу-обработчик убрать, все равно фокус идет на нее.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
При редактировании TextBox на одной форме почему-то запускается обработчик CommandButton
 
Модулей класса не вижу в редакторе. Там, где модули, формы перечислены. Где-то еще смотреть?
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
При редактировании TextBox на одной форме почему-то запускается обработчик CommandButton
 

Добрый день, уважаемые форумчане!

Столкнулся с интересной, непонятной для меня проблемой. Одна из форм в excel-файле почему-то реагирует на нажатие клавиши «Enter» не как остальные. В большинстве форм при редактировании TextBox или ComboBox при нажатии «Enter» происходит то же, что при нажатии «Tab». А на одной – почему-то запускается выполнение первого CommandButton из списка Controls. Причем это выполняется для любого TextBox или ComboBox, принадлежащего разным фреймам. Глаза сломал, выискивая отличие в свойствах – вроде ничем от других эта форма не отличается.

Была гипотеза, что это из-за того, что CommandButton встречается раньше, чем TextBox в списке Controls. Сделал тестовый файл, расположил контролы по-разному, но эффект один – CommandButton при нажатии Enter не запускается, происходит смена фокуса. С чем это может быть связано? Как победить?

Знаю, как победить обходным путем, но надо для каждого TextBox и ComboBox обработчики плодить… Может, все проще?
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Как сгруппировать и просуммировать значения с нескольких листов?
 
Цитата
Foevtsov написал:
и таких листов три - четыре и все это надо объединить
В примере только один... Поэтому непонятно: одна структура будет у разных листов или разная?

Как вариант названия предложил бы: "Формирование сводного отчета с нескольких листов данных"
Если у листов данных структура разная будет, это тоже неплохо бы упомянуть в названии темы.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Суммирование по условию наличия или отсутствия текста
 
Я даже файл приложил, чтоб разобраться проще было.
Умными названиями типа "формул массива" Вас напугал.
Зря испугались... К обычным формулам по крайней мере по вводу я свел
Изменено: PerfectVam - 09.11.2017 16:37:32
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Как в столбце найти одинаковые формулы?
 
Написал же...
В стиле ссылок R1C1 эти формулы выглядят полностью идентично!!!

Пакетно исправить или удалить можно автозаменой (Ctrl+H).
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Суммирование по условию наличия или отсутствия текста
 
СУММЕСЛИМН, по-моему, для Вашей версии неактуальна. Но если актуальна, то многие ее предпочтительной сочтут.

Еще есть возможность формулой массива функции СУММ. Чтобы избавиться от особого ввода, можно использовать СУММПРОИЗВ. Суть та же, но мудрить с Ctrl+Shift+Enter и прочими тонкостями не надо.
Зато удобств - куча. Условия проверки - самые широкие, включая любые функции. Чтобы продемонстрировать - реализовал проверку "заказано" - для любых букв хоть больших, хоть маленьких.
Среди недостатков знатоки отмечают снижение быстродействия при обработке огромных массивов данных или большом количестве таких формул. Но это от десятков тысяч начиная... Еще недостаток - если среди данных (в Вашем примере - столбец C) встретится текст - будет выдавать значение ошибки.
=СУММПРОИЗВ((Поступления!$A$2:$A$30=A2)*(СТРОЧН(Поступления!$B$2:$B$30)="заказано")*Поступления!$C$2:$C$30)
Изменено: PerfectVam - 09.11.2017 16:08:49
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Как в столбце найти одинаковые формулы?
 
Если я правильно догадался, то поможет стиль ссылок R1C1.
Либо переключите в настройках и ищите глазками, или в макросе используйте
Cells(,).FormulaR1C1 - их сравнивайте.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Изменение команды макроса по заданным условиям
 
Если "тел." есть обязательно, то можно так:
Код
shDATA.Range("gr" & ПоследняяСтрока) = Trim(Split(КнигаИсточник.Sheets(1).[F22], "тел.")(1))
Если может не быть, то, во избежание ошибки, эту строку вставить после проверки:
Код
If InStr(КнигаИсточник.Sheets(1).[F22], "тел.") Then MsgBox Trim(Split(КнигаИсточник.Sheets(1).[F22], "тел.")(1))
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Заполнение макросом ячеек с выпадающим списком сотрудников
 
Макрос элементарен.
Бежит циклом по нужному Вам диапазону. Если натыкается на ячейку с определенным условием (в примере - желтая), то копирует из ячейки F2 листа "Лист2" и вставляет как значение в желтую.
Остальное у Вас реализовано.

Вот...
Проверяет первый столбец.
Заполненные до себя не трогает.
Как заканчиваются значения в списке - останавливается. Остальные желтые не заполняет.
Изменено: PerfectVam - 09.11.2017 15:02:52
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Связанные (зависимые) выпадающие списки с привязкой к строке
 
Получилось.

Заменил ссылки на источники списков вместо имен на их формулы, в которых абсолютные ссылки на строки заменил на относительные.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Макрос для экспорта листов из Excel в word с полным сохранением форматирования ячеек, В теме вся суть
 
Не смог удовлетворить всем потребностям ТС. Не удалось добиться портретного сходства оригинала с копией в WORDе. Ручная вставка (Ctrl-V) сохраняет форматы, а вот при работе макроса элемент EXCEL-таблицы из буфера вставляется почему-то по-другому.

По договоренности с ТС работа прекращена.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Сравнить показатели по месяцам на определенную дату
 
Способ намбер раз:
Зачем добавлять допстолбы к данным? Добавьте их к сводной таблице, установите фильтр на них и фильтруйте как нужно без особых потерь времени и калечения данных. Автоитоги сводной таблицы запросто можно продублировать формулами рядом. ПРОМЕЖУТОЧНЫЕ.ИТОГИ и АГРЕГАТ могут отсекать скрытое.

Способ намбер два:
Если уж совсем никак - мешает структура сводной таблицы, копируем ее, вставляем на новый лист как значения и курочим там как заблагорассудится.
2.1. Если обновлять автоматом не надо - ограничений нет.
2.2. Если обновлять автоматом надо, можно формулами-ссылками обвязать, чтобы после обновления сводной просто скопировать ее, вставить как значения и новые данные сами посчитались...

Пример с первого Вашего файла прилагаю. При размещении месяцев по столбцам с итоговыми формулами мудрить даже и не придется...

Мнда... Итоги я, конечно, вставил не туда (они ловят месяц выше себя, а надо ниже)... Но эта задачка была посложнее, чем ловить ниже (там вместо ПРОСМОТР вполне сойдет ПОИСКПОЗ).
Изменено: PerfectVam - 26.10.2017 11:14:49
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Скoлькo стoит час рабoты специалиста?
 
Байка-не байка, но слышал:
В Великобритании сломался какой-то ускоритель и объявили премию для починившего какую-то сумму фунтов стерлингов (пусть для определенности будет 1000). Был там наш профессор Капица. Вряд ли он первым был, но решил принять участие. Походил, посмотрел, попросил молоток, несильно тюкнул и ускоритель заработал! Когда вручали премию, ведущий каверзно спросил: а не стыдно ли нашему профессору оценивать один удар молотком в 1000 фунтов стерлингов. На что нерастерявшийся Капица ответил: "Удар молотком я оцениваю в 1 фунт. А остальными деньгами я оцениваю выбор места: куда ударить."

От сложности задачи, не только от времени зависит. Можно использовать прежние наработки, тогда 5-минутной работой отделаться можно. А если тыкаться в новое, неосвоенное...
Изменено: PerfectVam - 20.10.2017 10:20:47
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Макрос для экспорта листов из Excel в word с полным сохранением форматирования ячеек, В теме вся суть
 
Если возникнет, будем обходить.
Пока мешает нескрытие запасных вариантов. В остальном вроде все решаемо.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 14 След.
Наверх