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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 19 След.
Зачем сражаться за секунды выигрыша по скорости работы макроса?
 
А на VBA можно написать класс-коллекцию и добавлять данные туда данные очинь быстро, на питоне наверное низя..
Изменено: testuser - 05.05.2024 14:41:52
О музыке.
 
Olga H., в Яндекс-музыке можно, но нужен интернет и платная подписка иначе рекламой затюкают
Словарь быстрее наполняется, если ключи для него отсортированы, Sorted Keys is good for Dictionary
 
Jack Famous, привет. Я проверял на случайных данных, и там Коллекция оказывалась значительно быстрее на объемах 500 + тыс. Что впрочем объяснимо таким моментом, что у хеш таблицы (по сути это массив) dictionary  четко фиксированый размер (~1000 элементов). Но если была бы возможность регулировать размер этой таблицы, то можно было бы получить бОльшую скорость dictionary на больших объемах. Скажу даже, я проверял сие, брал реализацию словаря The trick-а, делал в ней настраиваемый размер хеш-таблицы, и моя реализация в виде класса vba оказывалась быстрее Dictionary на объемах 500 т.+, что впроче все еще было медленей коллекции. В общем интересные моменты есть, хотя в сравнении, с UnorderedMap это все это конечно выглядит игрушками.. Если говорить о сортировке, то в коллекции, по логике она должна делать только хуже. Ведь коллекция использует логическое дерево, и при добавлении сортированых данных, постоянно будет расти только одна ветвь и получится так, то к самым первым элементам будет самый быстрый доступ, к последним - самый медленный..
Изменено: testuser - 03.05.2024 14:55:59
Быстрая очистка диапазона с данными (макрос), Оптимизация удаления (очистки) данных (макрос)
 
Цитата
БМВ написал:
все ж скорее события надо изолировать
Да, я об этом и хотел сказать, но почему-то процетировал другое
Быстрая очистка диапазона с данными (макрос), Оптимизация удаления (очистки) данных (макрос)
 
Цитата
mitya528 написал:
действительно, в модуле книги был макрос, который запрещает удалять строки, ради теста удалил его и 120 тысяч строк почистились за за 1 минуту.
Достаточно было добавить это
Цитата
evgeniygeo написал:
Application.Calculation = xlCalculationManual
Консулидация полей, Помогите решить проблему с консулидацией
 
Kleyn, чуть чуть подождите и возможно придут консульданты, чтобы прокосулидировть вас по означенному вопросу
Изменено: testuser - 28.04.2024 09:13:02
Как ускорить код, задающий параметры печати
 
Закомменипованное - лишние строки, это опции, имеющие заданные значения по умолчанию
Код
            With Sht.PageSetup
'                .LeftHeader = ""
'                .CenterHeader = ""
'                .RightHeader = ""
'                .LeftFooter = ""
'                .CenterFooter = ""
'                .RightFooter = ""
                .LeftMargin = Application.InchesToPoints(0.393700787401575) '28,3464566929134
                .RightMargin = Application.InchesToPoints(0.393700787401575)
                .TopMargin = Application.InchesToPoints(0.393700787401575)
                .BottomMargin = Application.InchesToPoints(0.393700787401575)
                .HeaderMargin = 0 'Application.InchesToPoints(0)
                .FooterMargin = 0 'Application.InchesToPoints(0)
'                .PrintHeadings = False
'                .PrintGridlines = False
'                .PrintComments = xlPrintNoComments
                .PrintQuality = 600
'                .CenterHorizontally = False
'                .CenterVertically = False
'                .Orientation = xlPortrait
'                .Draft = False
'                .PaperSize = xlPaperA4
'                .FirstPageNumber = xlAutomatic
                .Order = xlOverThenDown
'                .BlackAndWhite = False
                .Zoom = False
'                .FitToPagesWide = 1
                .FitToPagesTall = False
'                .PrintErrors = xlPrintErrorsDisplayed
'                .OddAndEvenPagesHeaderFooter = False
'                .DifferentFirstPageHeaderFooter = False
'                .ScaleWithDocHeaderFooter = True
                .AlignMarginsHeaderFooter = False
'                .EvenPage.LeftHeader.Text = ""
'                .EvenPage.CenterHeader.Text = ""
'                .EvenPage.RightHeader.Text = ""
'                .EvenPage.LeftFooter.Text = ""
'                .EvenPage.CenterFooter.Text = ""
'                .EvenPage.RightFooter.Text = ""
'                .FirstPage.LeftHeader.Text = ""
'                .EvenPage.CenterHeader.Text = ""
'                .FirstPage.RightHeader.Text = ""
'                .FirstPage.LeftFooter.Text = ""
'                .FirstPage.CenterFooter.Text = ""
            End With
Зачем сражаться за секунды выигрыша по скорости работы макроса?
 
Цитата
МатросНаЗебре написал:
есть подозрение, что это пришло из других языков, где просто нельзя написать по-другому.
Да там похоже пытаются притянуть специфику разработки в какой-нибудь джаве, на vba. Объявление переменныв внутри цикла на vba не имеет смысла, поскольку не отражает реальный принцип работы и может только запутывать.
Перенос таблицы из PDF в xls
 
Цитата
Zozel написал:
проблема в том, что они отсканированы и могут иметь наклон
Это наверное ключевое. Думаю, единственное что тут можно посоветовать, распечатть PDF в растр, откорректировать наклон в растре в каком-нибудь профессиональном редакторе (в Кореле допустим) максимально точно. И по новой распознать. Но не будучи специалистом в таких дела, подозреваю, распознавание таблиц это чистейшее дерьмо в любом случае..
Изменено: testuser - 22.04.2024 02:08:20
MsgBox в Офис Р-7
 
Здесь вот какой-то плагин "Кнопка ссылкой" презентуется..
https://youtu.be/UKz5RzL8XLo
Изменено: testuser - 19.04.2024 15:37:35 (удобно с..ка)
MsgBox в Офис Р-7
 
Цитата
БМВ написал:
Все фишки событий листа,
Я вот слышал такое определение для JS, что это событийно-ориентированный язык. Ирония судьбы конечно, если в Р7/Only не завезли события
Изменено: testuser - 19.04.2024 11:10:19
MsgBox в Офис Р-7
 
Цитата
evgeniygeo написал:
все настолько плохо в Р-7???
Там может все не так уж плохо, по крайне мере выглядит перспективно, то что JS, то что возможна какая-то тесная интеграция приложения с браузероми с их современными, продвинутыми отладчиками, это все интересно. Но в то же время отсутствие простого вывода аля MsgBox/print этопрям как явный звоночек, мессдаж прям, мол - да мы не такие как все, мы с причудами.. Там кстати где пример с дебаггером приводится, "Hello World" выводится на лист текстового редактора.. Странно все это.. :sceptic:
MsgBox в Офис Р-7
 
Отвлеченно глядя на обшую картину, видно, что серьезный подход такой. Там у них и то и это и третье, десятое. С другой стороны а нафиг офису все эти pdf-просмотрщики, видеоплееры. Этого добра и так хватает, не лучше ли было бы сосредоточиться на самом офисе..  Такие мюсли короче..

Кстати забавная вещь, там команда print вызывает окно выбора пинтера. Да с msgboxom засада. Alert по идее должен быть доступен в режиме отладки. Там отладка с помощью браузера, но я например не смог её включить "с полпинка", и вообще
Предложение по послаблению правил при создании первых 3 тем
 
Цитата
Sanja написал:
Не уместными с какой точки зрения?
Вот с этой
Цитата
evgeniygeo написал:
в первых трех темах помочь новому участнику научиться соблюдать правила форума
С другой стороны, повторюсь что лично мне это не особо-то и важно, но если бы я рассуждал так как буд-то мне это было бы важно, то я рассуждал бы.. в общем как-то так или не так, в общем все это не очень важно.. ))
Вставить данные на лист Excel без преобразования (xlSet)
 
bedvit, можно сделать просто в vba получить указатель разименовать, поработать с данными, и отпустить указатель,  как буд-то ни чего не был,  а менеджер памти Excel пусть делает что хочет. В общем на VBa все это не проблемма, главное знать структуру  данных. Структура конечно не очен понятна, со всеми этими юнитами, нельзя ли ее привести к какому-то такому виду?
Код
Private Type tpVariant
    vt As Integer
    r1 As Integer
    r2 As Integer
    r3 As Integer
    pt As LongPtr
    r4 As LongPtr
End Type
Вставить данные на лист Excel без преобразования (xlSet)
 
Цитата
bedvit написал:
кто будет управлять памятью, когда я вам передам указатель на массив?
Вы передадите указатель мне и отпустите у себя указатель, а я разименую его на safearray-массив структуры типа XLOPER12. Попутно конечно хотелось бы знать эту структуру, на MS почему-то нет по ней информации.
Да скорее всего придется в VBA коде сделать освобождение указателя на массив, но это не проблема.
Изменено: testuser - 18.04.2024 13:27:05
Предложение по послаблению правил при создании первых 3 тем
 
По общей сложности меня мало волнуют все эти вопросы, но все же скажу, на мой взгляд те две блокировки с утра действитльно выглядели не очень уместными. Там вроде человек составил какой-то развернутый вопрос (я не читал).. Я понимаю бывают такие, которые ни бе ни ме, два слова связать не могут.. Получается как  бы тупая уровниловка, тех кто вообще не хочет шевелить мозгами со всеми остальными..
Изменено: testuser - 18.04.2024 13:20:34
Вставить данные на лист Excel без преобразования (xlSet)
 
bedvit, а вы не могли бы добавить опцию, чтобы передавать/получать данные непосредственно по указателю массива типа XLOPER12?? (речь о передаваче указателя как целочисленного знчения)
Изменено: testuser - 18.04.2024 12:57:22
Вставить данные на лист Excel без преобразования (xlSet)
 
Цитата
bedvit написал:
Собственно это основной тип (структура) данных. Для VBA, Excel трансформирует  XLOPER12 в Variant и наоборот
Ну тут понятно, там где какое-нибуь трансформирование, наверняка тупое копирование, а в вашем классе это наверное релизовано как-то поумней. Такой вопрос, а нельзя ли передать в vba указатель непосредственно на массивы данных в ячеек, чтоб непосредстенно из vba можно было работать с этими данными?
Вставить данные на лист Excel без преобразования (xlSet)
 
Цитата
bedvit написал:
возможно Empty.
Empty это пустой вариант, есть еще Null тоже пустой но единичка в начале (тип)
Изменено: testuser - 17.04.2024 18:40:20
Вставить данные на лист Excel без преобразования (xlSet)
 
Виталий, добрый день! По моему что-то интересное и своевременное. В то время как в соседней теме постановили, что "Эксель себя исчерпал". Это конечно все шутки. Вы как я понимаю сделали быструю выгрузку налист, как раз то чего не хватает. Не моглибы просветить темный народ, что значит тип LPXLOPER12. LP вроде понятно - указатель, а XLOPER12 это что-то вроде бейсикового Variant?
Изменено: testuser - 17.04.2024 18:14:50
Свойства и методы, установленные в VBA по умолчанию
 
Цитата
nilske написал:
да везде работает "оптимально", не только в JS  ))
Ну там другие зато погремушки, там царство дикой автоматики безальтернативной динамической типизации.
Свойства и методы, установленные в VBA по умолчанию
 
Цитата
sokol92 написал:
вызывает функцию MyFunc.
Видимо так работает калькуляция..
А нет, так не срабатывает, т.е. калькуляция может избирательно работать
Код
=ЕСЛИ(ИЛИ(C10;0);1;MyFunc())
Изменено: testuser - 10.04.2024 15:05:39
Свойства и методы, установленные в VBA по умолчанию
 
Касаемо затронутой темы, можно еще привести пример (без примера, на словах )). Допустим константы, по логике программы лучше их использовть там где они уместны. Но в VB есть небольшой нюанс.. Когда константа передается в другую процедуру, она перестает быть константой. Если быть точнее она копируется в другую переменную, которая уже может быть изменена внутри вызываемой процедуры. Если сравнить, передачу обычной переменной по ссылке с передачей константы, то во втором случае добавляются дополнительные издержки на копирование. В случае со длинными строками это должно быть особенно заметно..
Изменено: testuser - 10.04.2024 13:19:36
Свойства и методы, установленные в VBA по умолчанию
 
БМВ, в JS, например, не так работает, проверял
Свойства и методы, установленные в VBA по умолчанию
 
Так если подумать, возможных сокращений не так и много, кроме упоянутых If, For.. Но если взглянуть на вопрос немного иначе, точнее это будет уже другой вопрос, например - как работает невидимая автоматика языка - то таком ракурсе можно было бы выделить не мало нюансов. Вот, допустим, такая конструкция в vb* работает не очень правильно
Код
If условие1 OR условие2 Then

При выполении данной строчки кода будет проверено услвие1 и условие2 даже если условие1 верное, хотя фактически было бы достаточно выполнения условия1 чтобы войти в блок. И в таком случае технически более правильно будет работать Select Case, хотя это будет длинее и менее читаемо..
Код
Select Case True
Case условие1, условие2
***
End Select
Изменено: testuser - 10.04.2024 07:35:57
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Цитата
AlexGor написал:
Copy же из этой книги копирует, если её закрыть то откуда копировать будет.
Ну так если с этой книги копируете, то лучше сначала вставить это куда-то, прежде чем закрыть эту книгу..
Свойства и методы, установленные в VBA по умолчанию
 
Выскажусь в пользу сокращений. Имхо, сама концепция-то сокращений правильная, как способ освобождения кода от всяческой избыточности и улучшения читабельности и т.д. Однако в объектной модели или может быть даже в автоматике самого языка не все так гладко устроено, в рез. чего приходится отказываться от некоторых приемов. В добавок если еще добавить случаи мертвых библиотечных ссылок в референсах, там вообще всякая чихорда начинает твориться, но, полагаю, их веротность нельзя принимать за норму. И вот, допустим, если представить код с обильным использованием коллекций или словарей и указанием в каждом случае метода item, наверное это будет грязно. Вот я, в частности, когда только осваивал словари, когда узнал о кратком обращение (без .item) прям удивился, насколько код станоится приятней и читабельней. В этом наверное и есть одна из лучших частей ООП.
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Цитата
AlexGor написал:
wbx.Sheets(1).Range("A1:E" & StrStop - 6).Copy
   Close_TempWorkbook
Может быть сначала выполнить Close_TempWorkbook, потом ".Copy"?
Свойства и методы, установленные в VBA по умолчанию
 
Цитата
написал:
Вопрос: какие свойства , методы, конструкции операторов приняты в VBA по умолчанию?
На VBA можно добавить в метод(property или функцию) класса специальный атрибут, который делает его умолчательным. Причем атрибут можно добавить в парное свойство (Property Get/Let) и это будет работать практичеки как "Cell.Value" в обе стороны.
Код
Option Explicit

Private Prop1

Public Property Let Metod1(InValue)
    Attribute Item.VB_UserMemId = 0
    Prop1 = InValue
End Property

Public Property Get Metod1()
    Attribute Item.VB_UserMemId = 0
    Metod1 = Prop1
End Property

Но есть один нюанс, чтобы атрибут начал рабоать, после его прописывания нужно класс экспортировать, и вновь импортировать. Есть и более быстрый способ - скопировать класс перетаскиванием в другую открытую книгу, удалить в текущей, и вновь скопировать его из другой книги в текущую с уже "включенными" атрибутами.
Изменено: testuser - 08.04.2024 02:26:30
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 19 След.
Наверх