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

Страницы: 1 2 След.
Как "подружить" две SmartTable
 
Ничего.
Кроме того, что у меня итак листов хватает. А мне еще плодить листы - нет уж, такое крайне нежелательно.
Кроме того, есть ситуации, в которых таблицы нормально обновляются. И тут я не понимаю, что является фактором выпадения ошибки.
Как "подружить" две SmartTable
 
Добрый день.

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

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

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

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

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

А как вывести другие числа? Как вывести число с округлением до целого?
Моя маска "ТЕКСТ(1,343;"# 0")" - выводит 1. Но, если значение будет равно нулю - то он ничего не выведет.
Как вывести число? Помогите, пожалуйста.
Подсчитать количество ячеек не равных ""
 
У меня получилось так: =6-СЧИТАТЬПУСТОТЫ(RC[-6]:RC[-1]). То есть посчитать то, что точно равно пусто или пустая строка. И вычесть это из общего количество ячеек.
Подсчитать количество ячеек не равных ""
 
Добрый день.

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

И как быть? Как подсчитать ячейки содержащие значения ненулевой длины?
Копировать ссылку как внутреннюю
 
Цитата
БМВ написал:
Ну если у вас указан лист то он никуда из формулы не пропадет, вот и тенет за собой имя книги.
Получается, что я мог бы заДВССЫЛить.
Что я сейчас и сделал. Не получилось. Потом прочитал, что значит второй параметр - и смог.

Вот только получается, что когда кто-то переключится в режим А1 (вот больной человек), то все сломается.
Теперь надо понять, как разыменовать ссылку после прокидывания в книгу.
Изменено: Vhodnoylogin - 25.04.2018 20:05:19
Копировать ссылку как внутреннюю
 
Цитата
БМВ написал:
При копировании, лично у меня, формула так и остается как в источнике, а вот при переносе, ссылается на другую книгу.
мой копипаст руками из одной книги в другую создает внешнюю ссылку.
Копировать ссылку как внутреннюю
 
Благодарю всех за подсказки, но нет - они не работают.

У меня есть шаблон таблицы (раскрашенного под таблицу диапазона). И в нем есть шаблон строки таблицы. Состоящий из ячеек определенного формата и формул.
Когда я копирую их из своего макроса в только что созданную книгу, то получаю ссылку на макрос, а не на вкладку этой книги.

Неужто в ВБА нет никакого механизма копирования ссылок как внутренних?
Копировать ссылку как внутреннюю
 
Добрый день.

Подскажите, пожалуйста, как копировать ссылку с другой книги как внутреннюю?
А то когда я копирую ссылку вида
Код
=ВПР((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

Помогите, пожалуйста.
Открыть для чтения открытый файл
 
Я уже понял, в чем проблема: надо писать в самом начале: FreeFile().
То есть this.File() - возвращает Интегер с номером файла. И нужно постоянно выделять новый номер.
Открыть для чтения открытый файл
 
Как? Мне нужно бы из ВБА тогда копировать, а потом уже открывать.
Открыть для чтения открытый файл
 
Добрый день, люди.

Есть необходимость открыть файл для чтения (и только для чтения): 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?
 
AndreTM,а вот это уже весомое различие.
Если не считать того, что объекты пользователя - это и есть пользовательский тип. Так что продолжаю юзать пропертю ЛЕТ.

PS: нафига вообще ввели это дурацкое правило, что надо юзать сет для объектов.
Изменено: Vhodnoylogin - 25.08.2017 14:27:46
Отличия пропертей: Let vs Set?
 
kavaka,, блин. Я о том и говорю, что не определяет.

Оно одинаково хорошо работает и с ЛЕТом, и с СЕТом.
Вот пример, которые доказывает, что разницы нет.

1) Создаем класс ClassTest
Код
Option Explicit

Private f1 As Variant
Private f2 As Variant
Private f3 As Variant

Public Property Let qql1(inn As String)
    f1 = inn
    Debug.Print "QQL1 in good: " & f1
End Property

Public Property Let qql2(inn As Collection)
    Set f2 = inn
    Debug.Print "QQL2 in good: " & f2.Item(1)
End Property

Public Property Let qql3(inn As ClassTest)
    Set f3 = inn
    Debug.Print "QQL3 in good"
End Property
2) Создаем модуль
Код
Option Explicit

Public Sub tezd()
    Dim qql As New ClassTest
    Dim coll As New Collection
    
    coll.Add 4
    coll.Add 7
    
    qql.qql1 = "qwee"
    qql.qql2 = coll
    qql.qql3 = qql
End Sub
3) Запускаем.

Видим, что в проперти ЛЕТ отлично зашли как строка, так и Объект "Коллекция". Да и любой другой объект тоже отлично заходит.
То есть, когда я знаю, что я хочу - внутреннюю реализацию - то я могу не заморачиваться надо оберткой. Берем постоянно ЛЕТ (потому что перед СЕТом надо еще set писать) и наслаждаемся.
Изменено: Vhodnoylogin - 25.08.2017 12:47:19
Отличия пропертей: Let vs Set?
 
Alemox,и что? Где ответ на мой вопрос?
Что мешает всегда использовать СЕТ или всегда использовать ЛЕТ?
Как найти свои сообщения на форуме?
 
Балгодарю.
Как найти свои сообщения на форуме?
 
Люди, здравствуйте.

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

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

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

Может кто-нибудь объяснить, в чем разница между ними?
Изменено: Vhodnoylogin - 25.08.2017 10:36:36
Вставить формулу в ячейку через VBA
 
kavaka,о, благодарю.
Поменял на запятую и все заработало.
Вставить формулу в ячейку через VBA
 
kuklp,Да, я ошибся, когда копировал формулу.
Я ее взял из иммидиейта. Но в самом коде у меня все норм.
Код
Const FFORMULA As String = "=IFERROR((@c1-@c2)/@c1;"""")"
Вставить формулу в ячейку через 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 получить адрес ячейки относительно другой ячейки
 
tolstak,благодарю. Именно то, что нужно.
vba получить адрес ячейки относительно другой ячейки
 
Мне нужна обратная задача - по двум ячейкам получить оффсет.

Подумал, что такой хрени не будет, и сам написал:
Код
Public Function RelAdress(ByVal cell_get As Range, ByVal cell_rel As Range) As String
    Dim res As String
    Dim roww As Integer, clmnn As Integer
    
    Set cell_get = cell_get.Cells(1, 1)
    Set cell_rel = cell_rel.Cells(1, 1)
    
    roww = cell_get.Row - cell_rel.Row
    clmnn = cell_get.Column - cell_rel.Column
    
    res = "R[" & roww & "]C[" & clmnn & "]"
    
    RelAdress = res
End Function
vba получить адрес ячейки относительно другой ячейки
 
Добрый день, люди.

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

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

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

Чтобы работало, нужно дополнить код этим:
Код
If WorksheetFunction.CountA(acceptor) = 0 Then
            donor_for_filled_cells.Copy
            .PasteSpecial xlPasteValidation
            .PasteSpecial xlPasteFormats
            .PasteSpecial xlPasteColumnWidths
            .PasteSpecial xlPasteFormulas
        End If
Страницы: 1 2 След.
Наверх