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

Страницы: 1 2 След.
Остановка выполнения VBA, Постоянно останавливается выполнение программы печати ценников.
 
Для сведения. Как устранить мне тут подсказали. А почему возникает? С 2012г проблемы не было. И вдруг... Оказалось. я освоил некоторые горячие клавиши и при входе на удалённый рабочий стол , чтобы развернуть окно во весь экран,. стал нажимать Alt+Ctrl+Break, а не давить мышку. При этом эксель вообще не открыт нигде! После этого  код VBA  в Excel стал прерываться. Проверил дальше. Вывод - если есть макрос VBA  никогда не нажимайте Break, хоть и в сочетании с другими клавишами. Даже если Excel закрыт, и Break нажимался по любому другому поводу.  
Остановка выполнения VBA, Постоянно останавливается выполнение программы печати ценников.
 
Msi2102, СПАСИБО! Способ 2 по ссылке работает. Тут на нас ругаются. что сами не нашли. Но мы ж торгаши, сложно.
Остановка выполнения VBA, Постоянно останавливается выполнение программы печати ценников.
 
Здравствуйте. Когда то давным-давно была приобретена программа для печати ценников в Excel. Это надстройка. На скрине их логотип и видно в меню "Печать ценников". И исправно работала. Мы к ней привыкли. Но вдруг выполнение сценариев стало останавливаться. Вылезает окно, нажимаем продолжить, работает дальше, опять остановка - продолжить и всё заканчивается. Т.е. программа работает как надо, но с остановками. В меню VBA нажимал Clear All BreakPoints - без толку. Как поправить дело. Обращаться к авторам бесполезно, там всё изменилось.
Генератор кодов EAN-13 и EAN-8, EAN-13 работает, EAN-8 - нет.
 
БМВ, Спасибо огромное!  Автор моей формулы пропал с форума ещё в 2016 году.
Проверил, но то же самое, как и я сам обрезал до 8. Рисует такой же ШК, но сканер его не понимает и он отличается от оригинала. Почему - не понимаю, Точно такой же принцип для 13, но для 8 рисует не так.
Изменено: vet4 - 09.07.2024 18:47:45 (P.S.)
Генератор кодов EAN-13 и EAN-8, EAN-13 работает, EAN-8 - нет.
 
Цитата
написал:
шрифты необходимые не системные,
Понял. Поднял древнюю тему, может автор формулы отзовётся.
помогите разобраться со шрифтом ean13.ttf для печати штрих кода
 
Цитата
написал:
Когда-то делал формулой, без VBA   Где-то есть и для нахождения 13 цифры
Извините, конечно давно дело было, но работает! А вот переделать для EAN-8 не получилось. Просто уменьшил формулу для 8-ми, рисует ШК, но он не читается сканером и выглядит иначе, по сравнению с оригиналом. Как поправить?
Генератор кодов EAN-13 и EAN-8, EAN-13 работает, EAN-8 - нет.
 
Добрый вечер. Нашёл такую формулу для генерации кода в ячейку. Замечательно работает. Но если цифр меньше, а бывает и 8 и 12, то сократив формулу, получаем код, который не читается сканером и по виду отличается от исходного. Приложил файл, всего два кода, для EAN-8 ещё и оригинал в виде картинки в ячейке. Где ошибка? Как уменьшить формулу? Если не уменьшать - не работает с EAN-8 вообще, а неумело сокращённая - работает неправильно..
Условное форматирование, Условное форматирование в ячейке по наличию или отсутствию данных в др. ячейках
 
Цитата
написал:
Может так нужно?
Именно! Спасибо. Всё работает. И даже то, что если записать ноль, то окраска пропадает - правильно. Это означает, что контрагента не забыли, но не заплатили, например. нечем.
Изменено: vet4 - 15.06.2023 15:48:04
Условное форматирование, Условное форматирование в ячейке по наличию или отсутствию данных в др. ячейках
 
Цитата
написал:
На примере второй строки правила противоречат друг другу:
Цитата
написал:
Чёт я вообще нифига не понял.

Сейчас буду пробовать. Вроде бы понятно написал, а может и нет? В примере всё верно!
Если в ХОТЯ БЫ в ОДНОЙ паре ячеек (C-D, E-F и т.д.) первая ячейка заполнена, а вторая нет - тогда ячейку этой строки во втором столбце (B2) закрашиваем.
Проще так - это контрагенты - в первой - надо заплатить, во второй - хоть что то оплатили, день закрылся, а если кого то забыли, ничего не заплатили - общую сумму оплаченного надо закрасить.
Условное форматирование, Условное форматирование в ячейке по наличию или отсутствию данных в др. ячейках
 
Здравствуйте.
Есть таблица. В ней строки. Возьмём одну строку. например 2. В ней в ячейке B2 есть какое то число. Но это не важно. Необходимо не макросом, а условным форматированием окрасить эту ячейку, если: в ячейка С2 не пустая, а ячейка D2 пустая, а также E2 не пустая, а F2 пустая и т.д до AI2 и AJ2
Вообще условным форматированием такое получится или только макросом?
Или может так понятнее. Ячейки в строке разбиты на пары. Если первая не пустая, а вторая пустая - ячейку во втором столбце надо окрасить. Во всех других случаях - обе пустые, обе заполнены, первая пустая, а вторая заполнена - окрашивать не надо.
Изменить поиск по строкам на поиск по столбцам
 
Ігор Гончаренко, Спасибо, всё понятно и просто. Работает. Только в конце надо буквы r и c поменять местами.
Изменить поиск по строкам на поиск по столбцам
 
Здравствуйте. С помощью подсказок с этого форума был из кусочков составлен макрос, который вполне работает.. основная функция - поиск гиперссылок и собирание их в один столбец. Ищет в диапазоне. Сначала проверяет строку в столбце 7, потом 8 и т.д. Потом берётся за сл. строку и т.д. Как переделать, чтоб сначала проверял на наличие гиперссылок весь столбец 7, потом 8 и так до конца диапазона? Дело в том, что эти гиперссылки ещё распределены по годам сверху вниз  - старые - в начальных столбцах, потом всё новее и новее. Это для меня важно. Тогда и в итоговом столбце 6 они сразу получатся по годам по возрастанию, а сейчас вперемешку. Эта часть макроса:
Код
'Сочетание клавиш: Ctrl+z
lLastRow = Cells.SpecialCells(xlLastCell).Row
diapazon = Range("G2:P" & lLastRow) 'диапазон, где ищутся коды из ЧЗ.
'Первая ячейка и последний столбец
For r = 2 To UBound(diapazon) '2-начальная строка поиска
        For c = 7 To 15 ' 7 и 15 начальный и конецный столбец поиска
        'определение ячейки с гиперссылкой
            If Get_Hyperlink_Address(Cells(r, c)) <> "" Then
            'если ячейка найдена, поместить результат в первую свободную
            'строку столбца 6
            lLastRowA = Cells(Rows.Count, 6).End(xlUp).Row
            Cells(lLastRowA + 1, 6) = Cells(r, c)
        End If
        'перебор c и r до конца диапазона
    Next c
Next r
Изменено: vet4 - 04.03.2023 18:09:52
Лишние нули при сравнении пустых ячеек
 
Ігор Гончаренко,  Только начал читать статью про "VBA Excel. Метод Range.Replace (замена текста в ячейках)" и его синтаксис. А тут бац! Получите. Ещё раз спасибо. Работает.
Поясню зачем. Я VBA не умею, а тут приспичило разбираться в магазине с сигаретами. Коды Дата Матрикс на пачках иногда надо списывать в Честном знаке. Сначала найти, какие надо списать, для этого много всяких действий, а потом сделать файл в эксель в котором в столбце А, только подряд по строкам эти коды. И файл отправляется в честный знак. Так он ругается, когда в ячейках не дата матрикс, а что нибудь ещё, хоть ноль. Типа, неверный формат данных. А на пустую строку конечно не ругается.
Лишние нули при сравнении пустых ячеек
 
Ігор Гончаренко, Задача такая. После копирования (это часть большого макроса) только значений из столбца с формулой (С), в столбец (А) , добавить нечто в макрос, чтобы он далее заменил вот эти одиночные нули на пустую строку. Те самые нули, которые получаются в А1 если А1=В1, а в В1 пусто.
Лишние нули при сравнении пустых ячеек
 
А что там? да запросто! добавлю к вставке
. Но эта зараза все нули убирает, из текста и чисел, а надо только единственный. Там даже есть ячейки, начинающиеся на 6 нулей, и именно так и надо. Зараза убирает все.
Код
Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues
    Range("A:A").Select
    Selection.Replace What:="0", Replacement:=""
Изменено: vet4 - 12.02.2023 20:07:34
Лишние нули при сравнении пустых ячеек
 
Ігор Гончаренко, Так и  я о том же. Надо не спрятать ноль, а заменить на "".
Лишние нули при сравнении пустых ячеек
 
Пытливый, Да, знаю это, например формат 0;-0;;@ или здесь начитал штук пять способов НЕ ПОКАЗЫВАТЬ 0. Но ведь ноль там как был так и есть. Просто не видно. При копировании результатов формулы  этих ячеек в столбец А ( нужны только значения) замечательно копирует именно только значения и невидимые нули тоже. И что интересно, если в результате формулы из первого поста в "С" получается именно пустая строка, то при копировании только значений, ноль в "А" не появляется. Загвоздка, чтоб потом, когда копирую в А нули, если они есть, заменялись на пустую строку. Т.е чего то надо добавить сюда:
Код
Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues
Лишние нули при сравнении пустых ячеек
 
Есть формула в столбце С   =ЕСЛИ(СЧЁТЕСЛИ($D:$D; $F2)=0; F2; "") находит совпадения  в D и F и выдаёт пустую строку, если есть совпадения и копирует содержимое ячейки из F в С, если нет совпадений. Т.е. в результате получится в столбце С те же значения, что и в F, но с пропусками по строкам, если содержимое ячейки в F совпало с любым значение из D. Работает замечательно. Если в D  есть данные и в F они есть, то в С пустая ячейка. Это правильно. А если в F данных уже нет и в D  тоже нет, то формула выдаёт ноль, а не пустую строку.
Короче: Почему эта формула при совпадении значений выдаёт пустую строку " ", как и написано в ней, а если обе сравниваемые строки пустые, тоже ведь - это совпадение, формула выдаёт ноль?
Макрос на лету., чтоб работал непрерывно
 
Спасибо. Отлично, тем более все коды EAN-13, на 0 не начинаются. Обычно 46 -РФ, иногда Белоруссия или Казахстан и число знаков или 13 или 8 Но не бывает сначала 5 нулей, потом 8 знаков. Это упрощает дело. Есть ещё один вопрос, Но задам отдельно,тема другая.
Макрос на лету., чтоб работал непрерывно
 
Пример условный. 100 товаров в куче. Надо оставить в этой корзине по одному образцу. Товары с штрих-кодом. Одинаковый ШК - это дубль товара. Пикаем все товары из корзины. Макрос потом ищет дубли. Нашёл. И что? Опять перебирать товары?
А хорошо бы на лету, без никакого нажатия кнопок. Пикаем ШК, постепенно заполняется столбец А, как только дубль - выделяет красным и может быть даже пищит. Выкидываем в другую корзину дубль товара, удаляем последний ШК и снова продолжаем до сл. дубля. Но это предполагает, что макрос запускается с каждой записью в ячейку. Т.е ищет дубли до последней заполненной строки (этих макросов полно в качестве образца, и тут на форуме тоже), но запускаясь при добавлении. Конечно, можно- добавил ШК - нажал кнопку - макрос сработал - снова ШК и т.д. Но сканер радио, к клавиатуре бегать не будешь каждый раз. надо чтоб с ходу.
Изменено: vet4 - 12.02.2023 12:30:11
Очистить диапазон., но оставить границы.
 
New, подход ясен - по очереди ненужное на нужное. Если ClearFormat , то удалит и границы, Interior.Color = xlNone - заливка по умолчанию.. Ещё заменить чернила и тип шрифта (убрать подчёркнутый и синий) - останутся границы.
Спасибо.
Изменено: vet4 - 11.02.2023 22:43:40
Очистить диапазон., но оставить границы.
 
Подскачите чайнику.
Range("A2:A1000").Clear  очистит всё.
Range("A2:A1000").ClearContents  очистит данные.
А если надо очистить всё, но не совсем? Например Clear  сотрёт и границы ячеек. Их надо оставить.
А ClearContents границы оставит, но оставит и ненужные цвета заливки, шрифта , а их надо удалить.
Как оставить только границы?
Изменено: vet4 - 11.02.2023 22:04:24
Копирование в открытый файл., Копировать. что в закрытый. что в открытый файл одним макросом.
 
New, Спасибо. Но работает также. После того как поправил RngToCopy.Copy на Rng.Copy (в этом месте показывало ошибку), работа макроса только с закрытым файлом, в открытый не входит. Ладно, оказалось на практике, когда запускаешь старый макрос, то ведь он тоже в конце закрывает файл. выходит надо только в первый раз, чтоб не дёргаться, проследить, что файл закрыт. При повторных действиях он так закрыт и остаётся.
Копирование в открытый файл., Копировать. что в закрытый. что в открытый файл одним макросом.
 
Сейчас так. Но копирует только в закрытый файл. В открытый - вылезает обычное предупреждение. Можно чуть переделать - будет в открытый. А как чтоб не глядя - что открыт, что закрыт - работало, но в конце, как и сейчас, закрывался?
Код
.........
Selection.Copy
ChDir "C:\"Папка" 'путь к папке с нужным файлом
Workbooks.Open Filename:="Имя.xlsx" ' имя файла в этой папке
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select' снова сделать активной только А1
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
Изменено: vet4 - 11.02.2023 18:26:25
Макрос на другом компьютере., Работает - не работает. - снова работает..
 
testuser, не вышло. Да можно, но надстройки Excel, а это надстройка COM, и как она там работает - неведомо. Рекордер действия по её отключению (снятию чекбокса) не запоминает. Пусть. Забить. Невелика беда - посчитал, 6 кликов мышкой - отключена.
Макрос на другом компьютере., Работает - не работает. - снова работает..
 

Продолжение. Что не возиться большим макросом, написал крошечный макрос, который затыкается в том же самом месте, на той же команде Paste. Разобрался почему на одном компе работает на другом нет. Дело в наличии на втором надстройки "Печать ценников". Давно-давно была честно приобретена навечно эта программа. Это надстройка. На гл. окне Excel есть дополнительная вкладка Печать Ценников. Мой макрос открывает вторую книгу, активизирует ячейку А1, но на вставке останавливается. Если делать пошагово, то ведёт себя по другому. При открытии Книги2 вылезает окно VBA с большой программой с многократными упоминаниями в нём "CennikExcel". Ничего не делая, закрою это окно, нажимаю ОК и далее мой макрос работает всегда. Надстройка Печать Ценников остаётся, как есть. Но мой макос работает. Совсем непонятно.
Надстройку можно отключить. Файл - Параметры - Надстройки - Выбрать надстройки СОМ - снять чекбокс. Вкладка "Печать Ценников" на гл. окне исчезает. Обязательно перезагрузить Excel.  Далее мой макрос работает.
Есть какой нибудь выход? Может есть какие то команды в VBA, отключающие надстройку? И чтоб без перезагрузки. Вставить в мой макрос - отключить, макрос выполнен - включить. Или как?

Код
Sub Макрос1()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+m
'
    Range("A1").Select
    Selection.Copy
    ChDir "C:\Users\user\Documents" 'путь к папке с нужным файлом
Workbooks.Open Filename:="Книга2.xlsx" ' имя файла в этой папке
    Range("A1").Select
    ActiveSheet.Paste
    ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub

Поиск гиперссылок с копированием в другой столбец.
 
evgeniygeo, Спасибо. Дошло.  Я заменил 1 на 5 в одном месте, но надо в обеих.
Надо так:
Код
lLastRowA = Cells(Rows.Count, 5).End(xlUp).Row
            Cells(lLastRowA + 1, 5) = Cells(r, c)
Изменено: vet4 - 10.02.2023 19:56:52
Поиск гиперссылок с копированием в другой столбец.
 
evgeniygeo, Спасибо огромное. В 67 лет никак не получается научиться VBA. После того, что делает макрос остальную часть сделал формулами, работает.
И функция макроса тоже была формулами, т.к искомые гиперссылки были в одних и тех же ячейках. Но "поставщик" вдруг стал ставить их в другие места и каждый раз приходилось менять адреса. С Вашим макросом развлекался пошагово, сначала в маленьком файле, менял всякие параметры, смотрел. что получается. Потом перенёс в настоящий. Установил диапазон, первую строку поиска, номера столбцов.
diapazon = Range("F2:O" & lLastRow)
For r = 2 To UBound(diapazon)
For c = 6 To 15
Ищет правильно. Но! Всегда отправляет результат, как и было в столбец А. Но надо в Е. Чего только не подстраивал - не понял, как сделать. Помогите.
Поиск гиперссылок с копированием в другой столбец.
 
Реальная задача в принципе та же самая. только таблица побольше. Но т.к я ничего не понимаю, а хочется, то решил потренироваться на маленькой. Приложил файл  с нужным результатом работы нужного макроса в столбце А. Но сначала в этом столбце пусто.
По порядку: хотел сначала найти "яблоки". Потом научиться найти гиперссылки. Потом копировать найденные ячейки с гиперссылками (только значения) в столбец А. Чтоб в итоге получилось, как в приложенном файле. И застрял сразу. Вот маленький макрос. Он ищет яблоки только в столбце "А". А надо в B2:D11. Потом там же вместо яблок буду искать гиперссылки. И т.д.
Код
Sub test()
Dim i&, iCnt1&, iCnt2&, arr()
For i = 1 To 100
    If UCase(Cells(i, 1).Value) Like UCase("яблоко") Then iCnt1 = iCnt1 + 1
Next i
MsgBox "На листе " & iCnt1 & "  яблок."
End Sub
Макрос на другом компьютере., Работает - не работает. - снова работает..
 
Пробовал по разному. При пошаговой проверке вылезает то самое окно VBA, а окно это из надстройки CennikExcel. Причём закрываю окно - и мой макрос работает как надо. Ладно, это не критично, после этого хоть весь день сиди в экселе - всё работает.
Есть попутный вопрос из этой таблицы. Постараюсь сам поучится и написать макрос по поиску ячеек с нужным содержимым нужной области, чтоб они копировались в один столбец подряд. Только вот как определить в макросе, что нужная мне ячейка в таблице - это ссылка? Т.е из всей области нужно выбрать только ссылки (синий подчеркнутой текст). Какой признак у ссылки? как его записать в макрос?
Или ещё один признак - этот текст всегда начинается на ноль и имеет подряд 21 знак. Что проще - искать как ссылку или по нулю и длине?
Изменено: vet4 - 09.02.2023 11:31:41
Страницы: 1 2 След.
Наверх