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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 86 След.
Сбросить счётчик форматов ячеек не переоткрывая файл., "Слишком много различных форматов ячейки"
 
Нет.
«Бритва Оккама» или «Принцип Калашникова»?
Эксперименты с цветом
 
Уже разбирали:
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=145921&TITLE_SEO=145921-sbrosit-schyetchik-formatov-yacheek-ne-pereotkryvaya-fayl.&MID=1175909&tags=&q=Форматы+не+удаляются+&FORUM_ID%5B0%5D=0&DATE_CHANGE=0&order=relevance&s=Найти#message1175909
Изменено: bedvit - 12.11.2023 14:46:41
«Бритва Оккама» или «Принцип Калашникова»?
Создать защиту калькулятора на основе эксель или гугл таблиц
 
Коллеги, не заметил, что это ветка платная. Извиняюсь. Не претендую.
Изменено: bedvit - 20.10.2023 11:13:18
«Бритва Оккама» или «Принцип Калашникова»?
Создать защиту калькулятора на основе эксель или гугл таблиц
 
Я здесь делал попытку улучшить ситуацию, но сейчас это мало кому интересно. VBA вытесняется всякими Python-ами и скрьезные решения обычно переходят на другие языки. Там и методы защиты другие.
Изменено: bedvit - 20.10.2023 11:11:27
«Бритва Оккама» или «Принцип Калашникова»?
Создать защиту калькулятора на основе эксель или гугл таблиц
 
Цитата
ArtemB1986 написал:
Мне нужна защита эксель калькулятора
Где здесь вопрос? По-моему это заказ на разработку. Адекватной защиты в VBA нет. Пишите свою dll, это будет лучше, но то же не гарантирует 100% защиты.
«Бритва Оккама» или «Принцип Калашникова»?
Создать защиту калькулятора на основе эксель или гугл таблиц
 
ArtemB1986, у вас конкретный вопрос (какой?) или вы хотите просто по этой теме пообщатся?
Изменено: bedvit - 20.10.2023 11:00:30
«Бритва Оккама» или «Принцип Калашникова»?
Неверная ссылка вперед или ссылка на неоткомпилированный тип
 
Дмитрий, спасибо за тест. Значит эта ошибка только в Excel2019x64 воспроизводится (а возможно и локальная).
«Бритва Оккама» или «Принцип Калашникова»?
Неверная ссылка вперед или ссылка на неоткомпилированный тип
 
Вот файл, в котором возникает такая ошибка (нажмите на кнопку, получите ошибку, для вроде бы обычного имени файла)
Изменено: bedvit - 04.10.2023 11:25:20
«Бритва Оккама» или «Принцип Калашникова»?
Генерация GUID в Excel
 
Цитата
Jack Famous написал:
получается, я могу 1 To 8 объявить
Да, там главное, что бы 8 байт влезло.
«Бритва Оккама» или «Принцип Калашникова»?
Генерация GUID в Excel
 
можно отключить вообще последний элемент в структуре, ты отключаешь последний символ.

Код
Private Type GUID_TYPE
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    'Data4(0 To 0) As Byte
End Type


Это только мои предположения, как Владимир пояснил кода мы не видим апишного.

Может он в любои случае пишет 8 байт, и не крашится по тому же сценарию (память на залоченная и не критически важная) Но может у тебя в другой макросе всплывут эти символы в какой нить строке).
Это, конечно навряд ли, но каков сюжет?)
Изменено: bedvit - 22.09.2023 18:14:21
«Бритва Оккама» или «Принцип Калашникова»?
Генерация GUID в Excel
 
Цитата
Jack Famous написал:
если Data4(7) As Byte (то есть от 1 до 7) — работает?
думаю не стоит так делать. Не факт что у тебя все символы сохраняются в структуру.
Просто сохраняешь 7 и потом читаешь 8 один лишний-может из какой либо другой программы) но так это только чтения прога не крашится. До момента пока не попадешь в кусок памяти залоченный.

Структура GUID
«Бритва Оккама» или «Принцип Калашникова»?
Генерация GUID в Excel
 
Цитата
sokol92 написал:
для генерации GUID
ух, Владимир здорово! Я не знал что так можно и набросал для себя в XLL функцию, оказалась очень похожая).
Все те же API
Если кому нужно будет писать для Excel на Си, то вот (очень простая. под спойлером)
Скрытый текст

Кому лень писать самим, могут просто бесплатно качнуть BedvitXLL и пользоваться (функция "CoCreateGuidXLL"), начиная с версии 4.10:
Изменено: bedvit - 22.09.2023 17:48:04
«Бритва Оккама» или «Принцип Калашникова»?
Преобразование числа в буквы и обратно, Convert number to letters and back
 
Цитата
bedvit написал:
Теперь вы можете стать обладателем уникального и единственного числа, по крайней мере в рамках нашей вселенной.Скорость генерации 1 млн. разных! GUID - 0,15 секунды
Теперь и в Excel. Функция: CoCreateGuidXLL
Изменено: bedvit - 22.09.2023 16:42:13
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
Jack Famous, да, верно. Спасибо.
«Бритва Оккама» или «Принцип Калашникова»?
Преобразование числа в буквы и обратно, Convert number to letters and back
 
Цитата
Jack Famous написал:
Но мне такое пока не нужно
ты сделаешь сохранение и я сделаю и оно у нас совпадет. Как будем различать? Уникальные guid для жтого и делались. Они используются в сети и являются уникальными в рамках всей вселенной, в частности нашего мирка, 3й планеты от звезды Солнце
«Бритва Оккама» или «Принцип Калашникова»?
Преобразование числа в буквы и обратно, Convert number to letters and back
 
Цитата
Jack Famous написал:
короткий ID из 2ух символов. Делов-то
в мире больше ПК чем сочетание 2х символов. Поэтому ключи будут совпадать.
«Бритва Оккама» или «Принцип Калашникова»?
Преобразование числа в буквы и обратно, Convert number to letters and back
 
Цитата
Jack Famous написал:
Где применить, правда, пока не знаю
везде, где нужно действительно уникальное значение.
«Бритва Оккама» или «Принцип Калашникова»?
Преобразование числа в буквы и обратно, Convert number to letters and back
 
Цитата
Jack Famous написал:
старая даёт уникальные ключи намного короче
Эти ключи являются уникальными в рамках одного ПК. Строго говоря они не уникальны.
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
BedvitCOM.dll_v3.9
BedvitXLL.dll_v4.10

Новый функционал в ArrayFilterV()
Теперь для простых условий можно задавать одномерный массив всего из 3х элементов (ранее было всегда 6, сократились скобки и логический оператор):
Код
Const РАВНО_ = 2
bVBA.ArrayFilterV ArrV, Array(1, РАВНО_, 2), 0, arrRes

А так же для сложных условий теперь можно передавать одномерный массив без преобразования и транспонирования, прямо сразу вот так (но должно быть строго по 6 элементов на каждое условие, как и раньше):
Код
 Const ИЛИ_ = 0, И_ = 1, РАВНО_ = 2
bVBA.ArrayFilterV ArrV, Array(, "(", 1, РАВНО_, 1, ")", ИЛИ_, "(", 1, РАВНО_, 11, ")"), 0, arrRes

т.е. теперь запись условия интуитивно более понятна (в строку) и наиболее близка к обычному условию:
(Столбец1 РАВНО 1) ИЛИ ( Столбец1 РАВНО 11), т.е.
(Столбец1 = 1) Or ( Столбец1 = 11).
Операторы сравнения нельзя законстантить, поэтому словами.
Изменено: bedvit - 01.08.2023 14:42:18
«Бритва Оккама» или «Принцип Калашникова»?
Быстрое преобразование массива из одномерного в двухмерный и наоборот с сохранением всех данных (BedvitCOM v1.0.5.0 и выше)
 
BedvitCOM.dll_v3.9
BedvitXLL.dll_v4.10

Добавил в библу новую универсальную функцию (по аналогии с выше обсуждаемыми):
ArrayDtoD(
arrayInOut - массив для преобразования
lLboundRow - индекс начала измерения (строки)
cElementsRow - количество элементов в измерении (строки)
lLboundCol - индекс начала измерения (столбцы)
cElementsCol - количество элементов в измерении (столбцы)
lLbound3 - индекс начала измерения (3е измерение)
cElements3 - количество элементов в измерении (3е измерение)
...
всего 10 измерений
...
)
Функционал: Изменить индекс начала измерения или количество элементов в любом из 10 измерений (или во всех сразу) или количество измерений. Данные не меняются, если где-то кол-во элементов уменьшается, то где-то должно увеличится.
Так же реализовано автоматический расчет элементов первого незаполненного измерения (если указан 0), если есть строки, автоматом рассчитаются столбцы и наоборот. Общее количество элементов должно быть равно первоначальному. Если расчетное количество элементов нового измерения будет число не целое - выдаст ошибку.
Пример из выше обсуждаемого кода:

Код
bVBA.ArrayDtoDF p, 0, 1, 0, 0 (здесь автоматом рассчитается 5)
bVBA.ArrayDtoDF p, 0, 0 (здесь автоматом рассчитается 1), 0, 5
Изменено: bedvit - 21.07.2023 14:41:19
«Бритва Оккама» или «Принцип Калашникова»?
Преобразование числа в буквы и обратно, Convert number to letters and back
 
Цитата
Jack Famous написал:
BedVit показал, как юзать библу (у него латиница в нижнем регистре и мне это нравится меньше   ).
Всем привет! Теперь можно и заглавными
Код
s2 = BAI.Bignum(1, -36)
и с основанием до 62
Код
s2 = BAI.Bignum(1, 62)
.
Немного оптимизировал ввод и вывод длинного числа (Bignum).
Мои результаты:
Код
4,20          MCH           451254646990741             4FYFITRO2D    451254646990741
0,09          BV            451254646990741             4FYFITRO2D    451254646990741


Цитата
Jack Famous написал:
Дык то-то и оно, что не гарантируется, а нужна
Добавил в библиотеку/надстройку функцию CoCreateGuid(), основанной на одноименной функции WinApi CoCreateGuid()-Создает GUID — уникальное 128-битное целое число.
Теперь вы можете стать обладателем уникального и единственного числа, по крайней мере в рамках нашей вселенной.
Скорость генерации 1 млн. разных! GUID - 0,15 секунды

Код
Sub TestCoCreateGuid()
    Dim BV As New BedvitCOM.VBA
    Dim t!, n&
    Const nCyc& = 1000000 ' 1000k
    
    t = Timer
        For n = 1 To nCyc
            BV.CoCreateGuid
        Next n
    Debug.Print Format$(Timer - t, "0.000")
    Debug.Print BV.CoCreateGuid
End Sub

Вывод:
0,152
{B7171A47-A1CA-4608-9207-64E50AC9F7FE}
Изменено: bedvit - 18.07.2023 11:21:22
«Бритва Оккама» или «Принцип Калашникова»?
Равномерно распределить массив чисел
 
Цитата
ZVI написал:
просто написал код DLL на C++
Моё почтение!
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
BedvitCOM.dll_v3.7
BedvitXLL.dll_v4.8

+ Оптимизирован фильтр массива ArrayFilterV() - теперь операторы OR, END - ленивые (как в С/С++):
Операнды выражений логического И и логического ИЛИ вычисляются слева направо (от первого условия до последнего, учитывая скобки - в скобках порядок такой же). Если значения первого операнда достаточно, чтобы определить результат операции, второй операнд не вычисляется.
Изменено: bedvit - 27.06.2023 00:18:36
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
Цитата
testuser написал:
Win-api хоть и стандартное, но для vba котыль
winapi и в xll будет. От него никуда не дется.
Цитата
testuser написал:
. Как известно, vba-udf "медленные на подъем" по причине com-взаимодейстивия, а вот если бы вызов udf поместить, в эдакую библиотечную "обертку".. что могло бы сильно поменять ситуацию..
Ситуация поменяется, но не в лучшую сторону. Теперь будет СОМ + обертка. Что бы не использовать  СОМ и работаиь напрямую с листом нужно писать код внутри XLL.
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
Цитата
testuser написал:
bedvit , добрый день! Может глупость, а может идейку хорошую подкину
testuser, спасибо за идею! Событий, конечно много, вплодь до отслеживания системных, но пока не представляется для чего они нужны в VBA, если можно использовать стандарное winapi. Плюс для каждого события свои аргументы, ну вот поймаете вы событие изменения окна или движения курсора мыши, а что дальше, ведь надо возвращать координаты, какая кнопка мышки нажата и т.д. А для событий Excel нужны к примеру названия листа, кнопка меню или данные текущей ячейки. Как это все склеить? Да и нужно ли?
Изменено: bedvit - 23.06.2023 18:35:05
«Бритва Оккама» или «Принцип Калашникова»?
BedvitCOM. Предложения для библиотеки. Простой фильтр одномерного массива, Array1D.Filter
 
В ArrayFilterV теперь и полноценный Like, который быстрее штатного.
И современные регулярные выражения, которые медленнее Like, но позволяют задать почти любое условия для фильтра.
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
Теперь доступны и группы захвата и подсчет количества вхождений. Вообщем весь функционал. Можно отфильтровать массив, практически по любому условию.
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
В текущую бета-версию, для "месье знающих толк в ... развлечениях" добавил регулярные выражения (оператор 128).
A так же отдельную функцию RegexMatchECMAScript(string, pattern)
Использована стандартная библиотека C++, функция regex_match(), грамматика ECMAScript (С++, .NET, JavaScript, Java?, Scala?), на https://regex101.com/ можно проверить шаблон в разделе "EcmaScript (JavaScript)".
Есть еще одна популярная грамматика PCRE2 (PHP, Perl, Python и Ruby-PCRE), если будет интерес, можно добавить и её.
Хотя,насколько я понял, они не сильно отличаются: https://stackoverflow.com/questions/3949991/javascript-regex-compared-to-perl-regex
Изменено: bedvit - 23.06.2023 17:49:48
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
Она же, кстати используется и в моем InStr(), ты думаешь он почему такой быстрый?)
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
Уже починил. Я с этим Like уже неделю  е...напиливаю... Читаю мануалы и мат.часть разную. Ты думаешь так просто обогнать штатную, там не дураки сидят.
Дошло до того, что подключил некоторые Си-шные функции, вроде strstr,
которая использует инструкции из SSE4. В частности команду PCMPISTRI. Отсюда и скорость.
Особенно на длинных строках Like будет быстрым, при использовании спец.символа "*"
Изменено: bedvit - 16.06.2023 19:01:49
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 86 След.
Наверх