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

Страницы: 1
Как запомнить состояние фильтров на листе, Нужен способ определения существования Criteria1 и Criteria2
 
Доброго дня всем!

Помогите разобраться с фильтрами на листе. Есть необходимость запоминать их состояние, чтобы после обновления данных в таблице восстановить фильтрацию обратно. То есть данные периодически меняются, и нужно сделать так, чтобы юзверь не фильтровал данные заново, после обновления.
Была мысль собрать по всем столбцам, где Filter.On=True значения Operator, Criteria1 и Criteria2, но тут поджидала засада! Дело в том, что эти свойства не факт, что существуют. То есть Criteria1 или Criteria2 могут просто отсутствовать и при попытке сохранить их значение возникает ошибка. Какой глубокий смысл было делать эти свойства динамически появляющимися я не знаю, но глюк получился знатный.
Проблема ещё в том, что я не могу понять, по какому принципу Ёксель решает, какой из Criteria он создаст, первый или второй или оба сразу.
Вот что получилось из под макрокодера на разных столбцах одного листа:
Код
Sub Mac1()
    ActiveSheet.Range("$A$5:$R$1210").AutoFilter Field:=18, Criteria1:=Array( _
        "IP 01.06.2023", "IP 07.06.2023", "IP 13.06.2023", "="), Operator:= _
        xlFilterValues
End Sub

Sub Mac2()
    ActiveSheet.Range("$A$5:$R$1210").AutoFilter Field:=4, Criteria1:=Array( _
        "Slovo1", "Slovo2", "="), Operator:=xlFilterValues
End Sub

Sub Mac3()
    ActiveSheet.Range("$A$5:$R$1210").AutoFilter Field:=11, Operator:= _
        xlFilterValues, Criteria2:=Array(2, "1/9/2023")
End Sub

Sub Mac4()
    ActiveSheet.Range("$A$5:$R$1210").AutoFilter Field:=11, Operator:= _
        xlFilterValues, Criteria2:=Array(2, "1/9/2023", 2, "6/14/2022", 1, "2/6/2020")
End Sub

Sub Mac5()
    ActiveSheet.Range("$A$5:$R$1210").AutoFilter Field:=11, Operator:= _
        xlFilterValues, Criteria2:=Array(0, "12/30/2021", 0, "11/29/2018")
End Sub

Sub Mac6()
    ActiveSheet.Range("$A$1:$A$31").AutoFilter Field:=1, Criteria1:=Array("=") _
        , Operator:=xlFilterValues, Criteria2:=Array(2, "5/2/2023", 2, "5/4/2023", 2, _
        "5/30/2023")
End Sub

Как видно, с одинаковым оператором в одном случае используется только Criteria1, в другом только Criteria2 а в третьем и то и другое.

И как это понять? (и простить...)

Можно просто сохранять тот параметр, который существует, не разбираясь почему именно он, но как определить, существует ли этот самый Criteria1 или Criteria2. Это главный вопрос.

Как точно определить столбец последней заполненной ячейки?, Нужен гарантированный способ нахождения последней заполненной ячейки.
 
Доброго дня многоуважаемым знатокам Ёкселя!
Возникла актуальнейшая проблема определения последней заполненной ячейки.
Есть у меня функция для нахождения такой ячейки, которая с этим вполне справлялась, пока не пришла беда, откуда не ждал. Мне нужно определять номер столбца последней ячейки в строке , где стоят кнопочки автофильтра. И тут вылезла неожиданность! Если у диапазона скрыты последние столбцы и фильтр включен, то функция возвращает 1, вместо 9 (см. файл примера). Поэкспериментировав с номером строки, где идёт поиск я пришёл к странному результату. Если столбцы не скрыты, то функция выдаёт верный результат независимо от состояния фильтра. Но если скрыть последние столбцы, то на всех ВИДИМЫХ строках результат будет 1, а вот для невидимых (которые скрыл фильтр) результат будет верным =9.
Кто из знатоков знает причину такого поведения функции? И главный вопрос: как гарантировано верно определить номер столбца последней заполненной ячейки в строке?
Перебор строк двумерного массива, способы получить все строки массива
 
Добрый день, планетяне!
Имеется динамический двумерный массив Arr. Чтобы перебрать все его строки, обычно используют способ вроде for i=LBound(Arr) to UBound (Arr).
Возник следующий вопрос: возможно ли то-же самое сделать при помощи for each? Чтобы перебирались не все элементы, а именно все строки.
Изменено: Мартын - 16.03.2020 09:39:03
Word2016 и параллельная стрелка, поставить автофигуру стрелка параллельно или вертикально
 
Уважаемые знатоки офиса, может кто в курсе, как в этом ... Worde сделать  автофигуру "стрелка" параллельно или вертикально???
В предыдущих  версиях с этим вопросов не возникало, а вот тут - ....... Стрелка поворачивается и становится на ЛЮБОЙ угол, кроме 0, 90, 180, и 270 градусов.
Она почему-то "перепрыгивает" эти положения!!! Что это за идиотизм??!?!? Или разработчики предполагали, что стрелки могут быть под любыми углами, кроме этих?
Как это победить???
Нарисовать изначально в горизонтали или вертикали можно, а вот "выпрямить" наклонную - никак.  
Изменено: Мартын - 14.05.2019 13:46:45
Тормоза в Excel 2016 в сравнении с 2010., Какие кто знает тормоза (и способы их обхода) в 2016 Excel?
 
В одном моём файле есть макрос, который открывает другой файл, фильтрует в нём "умную таблицу" и удаляет все отфильтрованные строки.
Таблица достаточно большая (+180000 записей, файл +16 МБ), одновременно отфильтровывается и удаляется около 4000 записей. Так вот, пока был 2010 офис, эта операция занимала пару минут, теперь на более быстром компе с 2016 офисом этот-же макрос отрабатывает минут 15-20.
Оба файла (и управляющий, с макросом, и с таблицей) хранятся локально в формате XLSB.
В чём может быть причина такого жуткого торможения? И как можно это преодолеть? Имеются ли какие другие примеры подобных тормозов? Мне это может потребоваться для обоснования отката к 2010 офису.
Такое поведение 2016 EXCEL относится не только к этим файлам. В любой, достаточно большой, "умной таблице", если отфильтровать строки, выделить их и удалить (хоть макросом, хоть вручную), то происходит сильное подтормаживание. Excel как будто зависает и долго о чём-то думает.  
Изменено: Мартын - 07.05.2019 14:07:18
Ошибка при умножении на константу, при умножении константы на некоторые числа выдаёт ошибку Overflow
 
Добрый день, умные люди!
Вопрос от другой части человечества: что за фигня происходит в данном примере? Поясните пожалуйста, ПОЧЕМУ в НЕКОТОРЫХ случаях выдаёт ошибку.
Дубликатор QR кодов, программа для дублирования кодов
 
Добрый день, мировой разум!
Есть потребность распечатать QR код, наклеенный на стене/потолке/дереве и т.п.
Можно тупо сфотографировать наклейку и распечатать на принтере, но, мы же в 21 веке живём, так зачем-же пользоваться методами дедушки Штирлица (фотографировать и печатать)? Гораздо логичнее было бы считать информацию с этого кода и, потом, обратно её закодировать в таком-же QR-коде.
Вопрос: видел-ли кто из многоуважаемых форумчан программу, которая выполняла бы подобную функцию: сканировала QR-код, и печатала его дубликат?
Международный мужской день!, мужской праздник
 
С удивлением узнал, что сегодня "Международный мужской день". Так что всех нас поздравляю, желаю крепкого мужского здоровья, побед в труде, счастья в личной и в семейной жизни! Ура, товарищи!!!
Отдельно поздравляю тех из нас, кто сегодня празднует "День ракетных войск и артиллерии". С двойным праздником, братья артиллеристы!
УРА!!!
З.Ы. Не вижу повода не выпить!
"Скормить" массив-строку формуле, заставить формулу воспринимать строку как массив
 
Всем доброго времени!
Подскажите кто знает как, если это возможно, "скормить" формуле строку с данными? То есть если написать руками =МАКС({1:2:3}), то формула работает, а вот как сделать, чтобы она работала в подобной ситуации =МАКС(СЦЕПИТЬ("{";1;":";2;":";3;"}")). Просто есть некая формула, которая на выходе формирует строку вида "{2:3:5:8:34}", и было бы хорошо, если бы можно было получить максимум и минимум из этого набора.
Изменение фона(?) ячейки, Как изменить фон ячейки при вводе данных
 
Добрый день знатоки Екселя!
Вопрос  такой: обычно, при выборе ячейки, она выделяется чёрной рамкой, а когда сделаешь даблклик, то внутри ячейки появляется чёрный моргающий курсор на белом фоне.
Мне прислали файл, где всё инвертировано. Внешне ячейки выглядят как обычно (белый фон - чёрный текст), но когда по ней кликнешь, то  рамка выделения белая, при вводе данных фон чёрный, так, что ни курсора не видно, ни того, что вводишь. Когда "выходишь" из ячейки, то вид её становится нормальным (белый фон - чёрный текст).
Где и как такое извращение настраивается????? У как бы это убрать, а то пользоваться неудобно (не видишь данные при вводе).
во вложении кусок файла.
определить нечётность номера дома, как определить чётный или нечётный номера дома
 
Всем доброго времени!
Возникла задача разделить улицу на чётные и нечётные дома. То есть в столбце, после номера дома надо поставить "ИСТИНА", если он чётный и "ЛОЖЬ", если нечётный. Всё бы хорошо, но:
1) это нужно сделать в VBA (не формулами) Проще говоря, нужна функция, принимающая строковую переменную и выдающая булевскую.
2) формат ячейки номера дома "текстовый".
3) данные выгружаются из сторонней программы и она во все текстовые ячейки лепит лидирующий апостроф (например '45)
4) в той сторонней программе нет "защиты от дурака" (да отсохнут руки у её создателей), поэтому оператор может влепить в номер дома что угодно, от просто пустого поля, до 25а или 13/3 или д.5б

Вводимые допущения и условия:
1) все пустые номера считать чётными
2) лидирующий апостроф должен игнорироваться
3) лидирующие пробелы не должны мешать определению чётности (т.е. номера " 1" или "       45" должны точно определяться как нечётные)
4) лидирующие сокращения "д" или "д." независимо от регистра и дополнительных пробелов не должны препятствовать определению чётности. (т.е. номера типа "д34" или "Д 56/3" или "  д.   8б" должны правильно распознаваться как чётные.
5) если номер начинается с чего угодно, кроме вышеуказанных символов или цифр, то считать его чётным. (например номера "кв.13", "%в", "ул. Центральная д.15" и т.п. считаются некорректными, и, следовательно, чётными)

Может кто подсказать как решить данную проблему?
Как программно закрепить определённую строку.
 
Доброе время всем!
Вопрос простой как три копейки, но ответа пока не нашёл.
Надо закрепить определённую строку (чтобы не прокручивалось всё, что выше её) на НЕактивном листе.
У меня через VBA выводятся таблички на несколько различных листов. У каждой таблички есть "шапка" с автофильтром. Так вот хотелось бы закрепить эти шапки от прокрутки.
Из всего, что нарыл в тырнете, есть только ActiveWindow.FreezePanes=True , но это только для активного окна! А мне кажется очень некрасивым способ мелькать окнами перед носом юзера, переключаясь между листами и фиксируя строки.
Нет ли способа сделать это, не активируя каждый лист?
Неясное поведение Excel после SQL запроса, Ошибка при повторном запросе.
 
Приветствую всех!
Пришла беда откуда не ждал. Макрос выполняет SQL-запрос по данным на первом листе и возвращает результат на второй лист.
Дальше начинается "волшебный бред": при повторном запуске макроса возникает ошибка "Потеряна связь с Microsoft Excel для просмотра присоединённых листов". Что это означает - понятия не имею. Самое бредовое начинается дальше, если файл сохранить ПОСЛЕ ошибки, то при повторном открытии ошибка возникает сразу-же, макрос больше не сработает никогда!!! Если файл не сохранять, то при повторном открытии макрос опять сработает один раз.
Что это за ошибка и как от этого бреда избавиться???
Это лишь один тестовый запрос из большого файла с кучей запросов. Так вот все другие запросы срабатывают сколько угодно раз, но стоит выполнить ЭТОТ запрос, как подобная ошибка появляется при выполнении ЛЮБОГО другого запроса и после сохранения файл становится полностью нерабочим.
Есть ли у кого умные мысли по этому поводу?
Как в макросе обратиться к SpinButton на листе?, программное изменение значений SpinButton, находящегося на листе (не на форме)
 
Добрый день всем!
Вопрос вроде простой, но пояснений по нему я пока не нашёл. Есть лист, на листе есть SpinButton (который из пункта "разработчик"-"вставить"-"элемент ActiveX"-"счётчик"). Он связан с ячейкой (в его свойстве "LinkedCell" указана ячейка "C2") и при щелчке по его кнопкам значение ячейки меняется, всё хорошо и гладко. Вопрос в следующем: как можно в макросе обратиться к этому SpinButton для изменения его свойств??? Например мне захотелось изменить его свойства Max, LinkedCell и Value. Как это сделать???
Просто написать :
Sub test
 SpinButton1.max=200
end sub
не катит, неизвестная переменная SpinButton1
вариант:
Sub test
Worksheet(1).SpinButton1.max=200
end sub
тоже не проходит.
КАК ЭТО СДЕЛАТЬ?
Как создать описание (пояснение) параметров функции?
 
Собственно в названии темы и есть вопрос.
Допустим создал я функцию
Код
Function Test(a As Byte, b As Byte) As Integer
  Test = a + b
End Function
Прицепил к ней описание, и теперь при вводе в ячейку листа "=Test(" появляется описание "Это функция суммы двух аргументов". А вот как задать описание каждого аргумента??? В стандартных функциях оно есть, да и в пользовательских функциях, при вставке в ячейку, под описанием тоже выводится имя аргумента и место под его описание вроде как предусмотрено.  Описание самой функции можно сделать через VB_Description, логично предположить, что описание её аргументов должно делаться через VB_VarDescription, но КАК???
Выбор нескольких столбцов данных в "умной таблице" (ListObjects) средствами VBA
 
Здравствуйте, все!
Вопрос такой: есть на листе таблица "Table1", в VBA ей соответствует ListObjects("Table1").
В таблице есть несколько столбцов с именами "a", "b", "c".
Мне надо выбрать (для копирования) области данных нескольких смежных столбцов одновременно. Как это сделать???
Данные (без заголовка!) одного столбца выбираются элементарно:
Код
Dim r As Range
Set r=ThisWorkbook.Worksheets("Sheet1").ListObjects("Table1").ListColumns.Item("b").DataBodyRange
r.Copy

и т.д.....
А вот как выбрать данные сразу двух/трёх/ и т.д. столбцов этой "умной таблицы"???
Страницы: 1
Наверх