Счастливчик, здравствуйте With и отключение событий, конечно, могут помочь, но я бы начал с замеров времени — действительно ли параметры печати замедляют…
Если они виноваты, то: • можно проверить, действительно ли ВСЕ эти параметры нужно задавать. • можно проверять параметр и не присваивать, если он уже нужный. • можно заменить Application.InchesToPoints() на заранее вычисленные значения или на свою, более шуструю, функцию.
Также, вполне возможно, что можно как-то задать шаблон, и, возможно, это будет быстрее, но тут не подскажу.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
alisa-gb: В своем выступлении о важности сложного пароля в современном цифровом пространстве он упомянул, что уже обладает знаниями, позволяющими взломать любой пароль, состоящий только из букв и цифр.
он, конечно, глубоко заблуждается. Наличие спецсимволов, всего лишь, расширяет библиотеку [символов] для создания строки. Гораздо важнее длина пароля и его непредсказуемость, т.к. "Hello", "Password", многие другие и их вариации — "пробиваются" в 1ю очередь (даже сайты есть с такими подборками ненадёжных паролей).
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
deviceik, здравствуйте Я такое в автокаде делал. Не уверен, что такое вообще возможно в Excel при текущих условиях. Не претендую.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
если вы ссылаетесь на ОДНО — откуда быть РАЗНОМУ результату??? Преобразуйте в значения, отключайте обновление ссылок — меняйте логику.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous: Не слушайте бота Savan — чушь несёт (чат жпт работает или подобная шляпа с кривым запросом).
ещё и тихонечко заменил "свои" потуги на 1ый вариант от _Boroda_
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
testuser: Ирония судьбы конечно, если в Р7/Only не завезли события
кнопочки рулят
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Обоснование, почему беру другие заказы: Мои контакты переданы [реальному] заказчику. Напишет ли и когда — неизвестно.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
покажите, пожалуйста, канал в телеге, более популярный, чем этот сайт. И скажите, как вы определили, что он более популярный? Лично для меня, ЛЮБОЙ канал будет проигрывать сайту — чисто из-за формата. Одно дело, новости читать и совсем другое — копаться в темах, кодах и примерах файлов.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit: А про то, о чем ты говоришь - я без кода не понимаю.
1. отфильтруй диапазон 2. вставь в него массив размером с ВИДИМУЮ часть 3. сними фильтр 4. посмотри, вставилось ли 5. повтори всё с умной таблицей
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit: А может быть по другому? Работает так же, как и обычная вставка - вставляется в указанный диапазон, неважно скрыт он или нет. Штатная работает так же.
вы, молодой человек, путаете ВСТАВКУ в ячейки и ВЫГРУЗКУ массива. Твой инструмент гораздо ближе к ВЫГРУЗКЕ (практически ей и является), а у неё заполнение скрытых ячеек, как раз, не осуществляется.
И вообще — почему опять такое неуважение к конечным пользователям? Какого лешего нам опять нужно что-то додумывать и домысливать? Сложно написать "в отличие от обычной выгрузки массива на лист, НЕ игнорирует скрытые ячейки и успешно в них вставляет"???
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit: XlSet может помещать в ячейки только константы, а не формулы.
то есть, если в качестве очередного элемента массива будет "=СУММ(A1:A:5)", то так строкой и вставится? Думаю, последующее преобразование в реальную формулу не составит труда. Ну, или, тогда уж проще и быстрее использовать штатную Range().Formula = arr
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
evgeniygeo: Мне кажется, это поможет слегка популяризировать форум, т.к. после закрытия первых двух тем, не очень хочется даже пытаться создавать новую.
1. С популярностью у площадки всё в порядке 2. Если "ранимость" от указания на несоблюдение правил превосходит необходимость получения помощи, то добро пожаловать на менее популярные ресурсы для Excel/VBA типа Кибера. Там практически любая тема (пример) получит какую-никакую (про количество, а не качество помогающих) помощь. 3. Далеко не всегда темы сразу закрываются.
Цитата
evgeniygeo: я бы предложил использовать не предупреждения, а количество созданных тем (думаю, что это не сложно отслеживать), но может быть можно использовать эту функцию (я первый раз ее сегодня заметил)?
Предупреждения и так не используются — в остальном предлагайте, сколько душе угодно, но далеко не факт, что оно будет реализовано
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Вводите как обычную функцию, а не массивную с фигурными скобками
Код
'Option Base 1
Option Explicit
'Option Private Module
'==================================================================================================
Function ConcatUniq(xRg As Range, xChar As String) As String
Dim xCell As Range
Dim x, s$, VT&, xDic As Object
Set xDic = CreateObject("Scripting.Dictionary")
For Each xCell In xRg
VT = VarType(xCell.Value)
If ((VT = vbEmpty) Or (VT = vbError)) Then GoTo nx
s = xCell.Value
If ((s = "") Or (s = "1")) Then GoTo nx
x = xDic(s)
nx: Next xCell
if (xDic.Count <> 0) Then ConcatUniq = Join$(xDic.Keys, xChar)
Set xDic = Nothing
End Function
'==================================================================================================
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Я не против удаления. Флёр названия мне тоже уже не нравится.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
TestSelection сортирует выделенный диапазон по 1му столбцу на месте
Код
Option Base 1
Option Explicit
Option Private Module
'==================================================================================================
Sub PRDX_SortRecur_WithInd(aV(), aI() As Long, LBnd&, UBnd&)
Dim i&, j&, n&, x, y
i = LBnd: j = UBnd: x = aV((LBnd + UBnd) \ 2)
Do
While (aV(i) < x): i = i + 1: Wend
While (x < aV(j)): j = j - 1: Wend
If (i <= j) Then
y = aV(i): aV(i) = aV(j): aV(j) = y
n = aI(i): aI(i) = aI(j): aI(j) = n
i = i + 1: j = j - 1
End If
Loop Until (i > j)
If (LBnd < j) Then PRDX_SortRecur_WithInd aV, aI, LBnd, j
If (i < UBnd) Then PRDX_SortRecur_WithInd aV, aI, i, UBnd
End Sub
'==================================================================================================
Function PRDX_Sort_Arr2D_ByIndexes(a2D, aInd() As Long) As Variant()
Dim aNew(), i&, rNew&, c&
ReDim aNew(UBound(a2D, 1), UBound(a2D, 2))
For i = LBound(aInd) To UBound(aInd)
rNew = rNew + 1
For c = 1 To UBound(a2D, 2)
aNew(rNew, c) = a2D(aInd(i), c)
Next c
Next i
PRDX_Sort_Arr2D_ByIndexes = aNew
End Function
'==================================================================================================
Function PRDX_Sort_Arr2D(a2D, Optional ByVal nCol& = 1) As Variant()
Dim x, aVal(), aInd&(), r&, c&
ReDim aVal(UBound(a2D, 1)): ReDim aInd(UBound(aVal))
For r = 1 To UBound(aInd)
aInd(r) = r: aVal(r) = a2D(r, nCol)
Next r
PRDX_SortRecur_WithInd aVal, aInd, 1, UBound(aInd)
PRDX_Sort_Arr2D = PRDX_Sort_Arr2D_ByIndexes(a2D, aInd)
End Function
'==================================================================================================
'==================================================================================================
'==================================================================================================
Private Sub TestSelection()
Dim rng As Range
Dim x
Set rng = Selection: If (rng.Areas.Count <> 1) Then Exit Sub
x = rng.Value: If Not IsArray(x) Then Exit Sub
rng.Value = PRDX_Sort_Arr2D(x, 1)
End Sub
'==================================================================================================
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Evgenyy: Интересно мнение форумчан: сайт умрёт или нет? Ничего нового, интересного не публикуется, ни какого развития не наблюдается.
Мне кажется, что тема не та. Эта — о другом, всё-таки. Новое публикуется (Приёмы тут и новые функции у Excel). Развитие ЧЕГО вы хотите наблюдать? У Excel оно происходит, у форума — не особо (только хуже с каждым обновлением), но какое вообще может быть развитие у форума — не представляю…
Цитата
Evgenyy: За прошедший год, как на сайте, так и на форуме не приобрел для себя новых знаний. Ничего нового, интересного, каких то фишек, лайфхаков. Может Excel исчерпал себя?
ну тут прям классика — если вы ничему не научились, то это только ваша проблема/задача/забота. При чём тут вообще программа? VBA хрен знает сколько не развивается, а я продолжаю что-то новое для себя открывать. К тому же, может, вы просто "взяли всё, что нужно" и больше вам не надо — соответственно, вы и не замечаете этого. Ну и, конечно, эффект плато.
Цитата
seggi: Прямо удивительно, почему вдруг народ перестал Excel интересоваться, за последние два года ведь ничего не изменилось.
ну, во первых, не перестал и даже не стал меньше, по моим наблюдениям. Напомню, что это мелкомягкие "кинули" пользователей, а не наоборот. В связи с этим, были предприняты попытки от такой токсичной зависимости — мне тут всё понятно. К тому же, запрет на использование офиса распространяется только на какие-то там ключевые области, а не на всё. Остальное — самоцензура. Думаю, немало маленьких и средних компаний вполне могут остаться на коробочной версии без каких-либо проблем для себя.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Как определить, отключён ли Application.StatusBar (штатное состояние) или в нём написано "FALSE", How to distinguish between «Application.StatusBar = False» and «Application.StatusBar = "False"»
Выяснилось, что иногда StatusBar может возвращать булево значение (в строке) по локали. Теперь так делаю.
Код
Function PRDX_StatusBar_IsBusy_ByStrVal(ByVal ASB$) As Boolean
ASB = LCase$(ASB)
If ((ASB = "false") Or (ASB = "ложь")) Then Exit Function
PRDX_StatusBar_IsBusy_ByStrVal = True
End Function
'--------------------------------------------------------------------------------------------------
Function PRDX_StatusBar_IsBusy() As Boolean
PRDX_StatusBar_IsBusy = PRDX_StatusBar_IsBusy_ByStrVal(Application.StatusBar)
End Function
'--------------------------------------------------------------------------------------------------
Sub PRDX_StatusBar_Set(ASB$)
If PRDX_StatusBar_IsBusy_ByStrVal(ASB) Then Application.StatusBar = ASB Else Application.StatusBar = False
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Kelbrock, здравствуйте. Для работы в ЛЮБОМ Excel можно сделать свою надстройку с формой поиска. На коммерческой основе могу сделать. Также, можете поискать темы (в том числе и у меня) по запросу "форма с поиском" — если хотите сделать сами.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
БМВ: Если нужно скорость поднять, то усложняй код, зато будет быстрее, а может и не будет.
в плане ветвления — будет. Я ставлю самые частые условия на первые места проверки и использую бинарное ветвление для самых сложных случаев.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄