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

Страницы: 1
Как "подружить" две SmartTable
 
Добрый день.

На листе размещены несколько таблиц (в значении Smart Table/ListObject). Они могут меняться по своей структуре как угодно: добавляться и удалятся могут как строки, так и столбцы. Естественно, все в разумных пределах.
Поэтому я разнес таблицы на достаточное расстояние друг от друга. Или размещал их одну под другой - все бесполезно. Вылезает ошибка "недопустимая операция. Была предпринята попытка сдвинуть ячейки таблицы на листе".

И я не знаю, как быть. Так как это динамические во всех смыслах таблицы, которые должны меняться.
Что делать? Подскажите, пожалуйста.
Получить последние использованные параметры замены
 
Добрый день.

Поступила такая задача - получать последние использованные параметры замены. То есть, есть метод "Range.Replace SearchOrder:=xlByColumns, MatchCase:=True".
Вот эти последние значения и нужно получить. Они где-то хранятся, но я не знаю - где.

Помогите, пожалуйста.
Как работают маски функции ТЕКСТ
 
Добрый день.

Прошу помочь с пониманием, как работают маски функции =ТЕКСТ().
Пока что я научился только выводить проценты и число знаков после запятой в процентах.

А как вывести другие числа? Как вывести число с округлением до целого?
Моя маска "ТЕКСТ(1,343;"# 0")" - выводит 1. Но, если значение будет равно нулю - то он ничего не выведет.
Как вывести число? Помогите, пожалуйста.
Подсчитать количество ячеек не равных ""
 
Добрый день.

Прошу помочь: как подсчитать количество непустых ячеек? Вроде бы просто, но не все так гладко.
"Пустая" ячейка не совсем и пустая - там содержится формула вида:
Код
=ЕСЛИ(RC[-8]=1;RC[-5];"")
То есть, при определенном условии, ячейка кажется пустой, но сам Эксель ее на пустой не считает.
И формула
Код
=СЧЁТЕСЛИ(RC[-6]:RC[-1];"<>"&"")
тоже не считает ячейки с нулевой строкой пустыми.

И как быть? Как подсчитать ячейки содержащие значения ненулевой длины?
Копировать ссылку как внутреннюю
 
Добрый день.

Подскажите, пожалуйста, как копировать ссылку с другой книги как внутреннюю?
А то когда я копирую ссылку вида
Код
=ВПР((RC8&RC9&RC10);КУКУ!C1:C10;10;0)
с другой книги, то при копировании создается внешняя ссылка
=ВПР((RC8&RC76&RC75);'[Рабочий вариант.xlsb]КУКУ'!C1:C10;10;0)

Подскажите, пожалуйста, как копировать ссылку как внутреннюю.
Автоматическое переподключение Надстроек
 
Добрый день, люди.

К книге обычно подключаются несколько надстроек *.xlam, которые лежат по некоторому пути.
Но он может измениться, измениться шаблонно. То есть если был "базовый_путь/расширение.хлам", то станет "новый_базовый_путь/расширение.хлам".
В итоге хочу написать макрос, который переподклчюает все Надстройки по изменившемуся пути.
Логика такая: берем новый путь + название расширения = подключаем такую же надстройку по новому пути.

Но столкнулся с рядом проблем.
1) как получить список подключенных надстроек? Application.AddIns не подходит, так как он возвращает список из 8 каких-то совершенно левых названий (некоторые даже не *.xlam), тогда как у меня подключено 10 расширений.
2) как подключить надстройку к конкретному проекту?
3) смогу ли я рекурсивно переподключить все надстройки (ведь они сами могу ссылаться на другие надстройки). Эта проблема вытекает из п.2

Помогите, пожалуйста.
Открыть для чтения открытый файл
 
Добрый день, люди.

Есть необходимость открыть файл для чтения (и только для чтения): Open path For Input Access Read As #this.File()
Но файл уже где-то открыт. Причем не в экселе. Поэтому возникает ошибка: "55 File already open".

В итоге макрос не работает. А мне нужно просто прочитать файл. И только.
Что делать, чтобы можно было его открыть?
(Не)смещение формулы при вставке новой строки
 
Добрый день, люди.

Есть такая проблема.
Есть относительная формула, которая берет данные из ячейки "на пять столбцов правее". При вставки новых ячеек сверху формулы - формула смещается, изменяясь при этом: "на пять столбцов правее и на одну строку выше".
Мне так не надо.

Научите, пожалуйста, как при вставке диапазонов админить формулы: когда хочу - изменять формулы, когда не хочу - не изменять.
Изменено: Vhodnoylogin - 10.11.2017 09:28:15
Пользовательские евенты и зачем они?
 
Добрый день, люди.

Я тут прочитал, что в ВБА, оказывается, можно создавать пользовательские евенты (Creating Your Own Events In Class Modules). Круто!
Вот только я не понял, как ими пользоваться. Ведь, чтобы запустить евент, нужно вызвать функцию RaiseEvent.

И в итоге все выливается в то, что
"создать евент, запились обработчик евента, Поднять евент" = "создать функцию (с функционалом обработчика), вызвать функцию".

В чем я ошибаюсь? Подскажите, пожалуйста, как правильно пользоваться евентами, чтобы они были больше, чем вызываемая функция.
Как найти свои сообщения на форуме?
 
Люди, здравствуйте.

Не могу понять, как найти все свои сообщения/темы на форуме. Такая штука должна быть легкодоступна и очевидна. Ни то, ни другое не выполняется.
Подскажите, пожалуйста, как посмотреть это?
Отличия пропертей: Let vs Set?
 
Добрый день, люди.

Есть такой вопрос: чем отличаются "проперти сет", от "проперти лет"? Вроде бы все ясно -  лет для не-объектов, сет - для объектов.

Но ведь каждая проперти, по-сути, является методом класса. А внутренняя реализация неизвестна.
Поэтому там может происходить что угодно. И передавать внутрь метода-проперти тоже могу что угодно. Поэтому я не вижу смысла в ЛЕТе/СЕТе.

Может кто-нибудь объяснить, в чем разница между ними?
Изменено: Vhodnoylogin - 25.08.2017 10:36:36
Вставить формулу в ячейку через VBA
 
Добрый день, люди.

Как вставить формулу через ВБА?
Вроде бы все просто - создаем тестовую переменную и запихиваем ее в проверти "формула". И этот способ даже работает.
Вот только одно НО:
если
Код
 "=R[-8]C-R[-4]C)/R[-8]C"
работает, а
Код
"=IFERROR((R[-8]C-R[-4]C)/R[-8]C;"""")"
уже не работает. И выдает аппликейшн-еррор.

Причем если вставить эту формулу в ячейку копипастом, то все будет в порядке.

PS: "Еслиошибка" тоже пробовал. Результат тот же.
Изменено: Vhodnoylogin - 24.08.2017 14:46:29
vba получить адрес ячейки относительно другой ячейки
 
Добрый день, люди.

Есть вопрос: как получить адрес одной ячейки относительно другой ячейки?
То есть получить такой адрес, который используется в формулах.

Если писать так
Код
selection.cells(1).address(false,false,xlr1c1)
то он вернет "абсолютный" относительный адрес - то есть адресс, который ссылается на ячейку относительно самой первой ячейки.

А мне бы получить относительный адресс от другой (не первой) ячейки. То есть какую-нибудь такую формулу:
Код
relAdress(cell_donor,cell_acceptor) as string
Помогите, пожалуйста.
Ошибка .SpecialCells(xlCellTypeBlanks)
 
Добрый день.

Столкнулся с такой проблемой: не могу найти пустые ячейки с помощью метода .SpecialCells(xlCellTypeBlanks)
Диапазон точно пустой, так как он выбирается на только что созданном чистом листе. Он выбирается и... выдает ошибку при поиске пустых ячеек.
При этом .SpecialCells(xlCellTypeConstants) тоже ничего не находит... Впрочем, как и поиск по формулам или еще по чему.

Но стоит сделать .Clear, как пустые ячейки начинают определяться, как пустые.... Но что это за бред, какими они были до этого? Как мне найти пустые ячейки?
Изменено: Vhodnoylogin - 21.04.2017 09:34:43
Ошибка: проскакивает обработчик ошибок
 
Добрый день.

Есть серьезная проблема. Ошибка проскакивает обработчик ошибок. И прыгает сразу на один уровень вверх.
Структура кода такая:
Код
function f1(){
    on error goto errHandler1
    function f2(){
        on error goto errHandler2
        for i = 1 to 5
            function f3(){
                err.raise -1
            }
        itLabel: next i
        errHandler2:
            err.clear
            goto itLabel
    }
    errHandler1:
}
Функция 3 возвращает результат, либо ошибку. В случае ошибки итерация в цикле должна пропускаться. Чем и занимается обработчик Хендлер2.

Проблема в том, что он это делает один раз. То есть первый раз при возврате ошибки программа переходит в обработчик Хендлер2. Но на второй ошибке - программа улетает сразу в Хендлер1.
Это видно при пошаговом дебажиньи кода - сразу после Райза программа прыгает на Хендлер1.

Пожалуйста, помогите разобраться с проблемой.
Узнать количество ячеек в диапазоне
 
Люди, здравствуйте.

Как узнать количество строк и столбцов в выделенном диапазоне? Чтобы считалось именно столько, сколько выделено.
А то сейчас заметил, что методы .Row & .Column возвращают что-то, что не является фактическим количеством выделенных строк и столбцов.
Как скопировать видимую часть Сводной таблицы?
 
Люди, здравствуйте.

Появилась такая задача: скопировать только видимую часть сводной таблицы. И, вроде бы, даже получается. Но не все так безоблачно, как ожидалось.
Есть серьезная проблема - не могу нормально скопировать форматы. При их копировании начинается белиберда.

Вот такой вот код:
Код
With dws.PivotTables(1)
.PivotSelect "", xlDataAndLabel, True
Set rng = Selection
Set rng = Range(ws.Cells(BEG_ROW2, BEG_COLUMN3), ws.Cells(BEG_ROW2 + rng.Row, BEG_COLUMN3 + rng.Column))
Selection.Copy
rng.PasteSpecial xlPasteValues
rng.PasteSpecial xlPasteFormats
       
И этот код не разукрашивает всю скопированную таблицу. Почему-то он определяется размеры диапазона как 2х3 - где остальная таблица?

Но раньше было еще хуже.
Код
With dws.PivotTables(1)
.PivotSelect "", xlDataAndLabel, True
Set rng = Range(ws.Cells(BEG_ROW2, BEG_COLUMN3), ws.Cells(BEG_ROW2 + .RowRange.count, BEG_COLUMN3 + .ColumnRange.count))
Selection.Copy
rng.PasteSpecial xlPasteValues
rng.PasteSpecial xlPasteFormats
Это вообще разукрашивало в два раза больше столбцов и колонок, чем надо.

Как правильно скопировать видимую часть сводной таблицы так, чтобы сохранить как данные, так и разметку?
Копировать форматы, формулы и другие вещи без проблем...
 
Люди, здравствуйте.

Есть такая проблема: не могу копировать форматы, формулы и другие вещи без проблем...
Вот такой код:
Код
Set rng = Range(.Cells(BEG_ROW1, 1), .Cells(BEG_ROW1 + num_of_rows - 1, END_COLUMN1))
standard_rng1.Copy
rng.PasteSpecial xlPasteFormulas
rng.PasteSpecial xlPasteFormats
rng.PasteSpecial xlPasteColumnWidths
Он копирует форматы, но полностью убивает данные, которые есть в ячейках.

Такой код:
Код
Set rng = Range(.Cells(BEG_ROW1, 1), .Cells(BEG_ROW1 + num_of_rows - 1, END_COLUMN1))
        standard_rng1.Copy
        rng.PasteSpecial xlPasteFormulas, xlPasteSpecialOperationAdd
        rng.PasteSpecial xlPasteFormats, xlPasteSpecialOperationAdd
        rng.PasteSpecial xlPasteColumnWidths, xlPasteSpecialOperationAdd
Этот код не убивает данные, но добавляет ко всем формулам "0+". Это меньшее из зол. Но это зло заставляет писаться в ячейках с формулами слово "#ЗНАЧ". А мне нужна пустота там, где нет данных для формулы...
Присвоить Сводной таблице новый источник данных
 
Люди, здравствуйте.

Есть сводная таблица. Ее нужно скопировать на новый лист (сделано),  переименовать (сделано), изменить источник данных (не сделано).
Есть запрос, результат которого я выкачиваю в рекордсет. Нужно юзануть этот рекордсет так, чтобы:
1) изменились данные
2) сохранилось форматирование

Как это сделать? Подскажите, пожалуйста.
Страницы: 1
Наверх