По сути вопроса: стандартная замена не работает внутри редактора формул. А использовать редактор формул в данной ситуации не такая уж простая задача. Я бы на Вашем месте просто записал выражения обычным текстом, отформатировав их максимально "по феншую". Если, конечно, при этом не надо их еще и вычислять...
Фрезератор написал: загрузка будет с первого листа
а откуда такие мысли? Если Вы открыли книгу, активировали 3-ий лист, то откуда VBA должен понять, что загружать надо с первого? В статье фраза звучит не просто так: если лист никак не указан - то по умолчанию будет определяться диапазон на активном листе активной книги.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Кажется понял про что именно речь. Немного про другое подумал. Они не то, чтобы подстраиваются, но... В общем для своих меню это возможно только начиная с 2010 Excel. ставите для группы признак autoscale=true и элементы в группе будут пытаться организоваться в маленькие значки, если ширины окна недостаточно для размещения их как больших. В XML это будет выглядеть примерно так:
Код
<group id="tt" label="Dinamic Custom Ribbon" autoScale="true">
<button id="t1" image="image1" size="large" />
<button id="t2" image="image2" size="large" />
<!-- тут скорее всего еще кнопки и т.д. -->
</group>
Я ни разу не встречал, чтобы в одном и том же экземпляре Excel кнопки команд менялись динамически в размерах при изменении окна. На разных ПК с разными размерами экрана - да, они могут выглядеть по разному, но достигается это(насколько знаю) механизмами внутри DLL при первоначальном построении схемы, но не динамически во время работы. Максимум что знаю - что элементы "ужимаются" в пределах своей группы, если размера окна уже не хватает для отображения всех элементов группы.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Msi2102 написал: он не всё нашёл, а файл я приложил
посмотрел файл. И где он не все нашел? Где еще в файле хоть в одной процедуре есть текст "what are we looking for?"? Я все просмотрел и нашел исключительно в двух процедурах: "Module1 - ParseModulesAndProcedures_3" и "Module2 - ParseModulesAndProcedures". Где по Вашему мнению код отработал неверно? В каких еще процедурах есть указанный текст для поиска? Даже стандартный поиск VBE ничего более не находит. Может Вы что-то другое ищете?
Msi2102 написал: У меня не совсем корректно отработал Ваш макрос
не очень комильфо говорить "не корректно отработал" и не приводить пример того, где и как Код писался на скорую руку, но даже так не совсем похоже на то, что там много ошибок. На вскидку, проблема может крыться только в этой строке:
Код
.ProcOfLine(ll, 0)
т.к. я взял тип процедуры за 0, хотя по хорошему надо бы её определять. Не думаю, что это самая большая проблема во всем алгоритме.
Jack Famous написал: Как (напрямую, без экспорта в текстовый файл и чтения из него) получить строку модуля или весь модуль в строковую переменную, например?
ну как всегда, в общем-то можно, кустарно...Цикл по всем модулям, а там можно от первой строки и до последней просто считывать:
Код
Sub ParseModulesAndProcedures()
Dim VBProj As Object, VBComp As Object, CodeMod As Object
Dim lLineNum&, lNumOfLines&, ll&, llines_cnt&
Dim ProcName$, sLine$, sToFindVal$
sToFindVal = "what are we looking for?"
Set VBProj = ActiveWorkbook.VBProject
'цикл по модулям
For Each VBComp In VBProj.VBComponents
Set CodeMod = VBComp.CodeModule
With CodeMod
lLineNum = .CountOfDeclarationLines + 1
llines_cnt = .CountOfLines
'цикл по каждой строке модуля(кроме деклараций)
For ll = lLineNum To llines_cnt
sLine = .Lines(ll, 1)
If InStr(1, sLine, sToFindVal, 1) > 0 Then
'выводим имя процедуры, в которой нашли значение
ProcName = .ProcOfLine(ll, 0)
Debug.Print "Module name: " & .Name & "; Proc name: " & ProcName
End If
Next
End With
Next
End Sub
процедурка выведет в дебаг имена всех модулей и процедур, в которых найдет значение, заданное переменной sToFindVal. Значения в комментариях так же учитываются, но это уже довольно легко обойти:
Код
Sub ParseModulesAndProcedures()
Dim VBProj As Object, VBComp As Object, CodeMod As Object
Dim lLineNum&, lNumOfLines&, ll&, llines_cnt&
Dim ProcName$, sLine$, sToFindVal$
sToFindVal = "Property Set"
Set VBProj = ActiveWorkbook.VBProject
'цикл по модулям
For Each VBComp In VBProj.VBComponents
Set CodeMod = VBComp.CodeModule
With CodeMod
lLineNum = .CountOfDeclarationLines + 1
llines_cnt = .CountOfLines
'цикл по каждой строке модуля(кроме деклараций)
For ll = lLineNum To llines_cnt
sLine = .Lines(ll, 1)
sLine = Trim(sLine)
If Left(sLine, 1) <> "'" Then
If InStr(1, sLine, sToFindVal, 1) > 0 Then
'выводим имя процедуры, в которой нашли значение
ProcName = .ProcOfLine(ll, 0)
Debug.Print "Module name: " & .Name & "; Proc name: " & ProcName
End If
End If
Next
End With
Next
End Sub
Сделать отдельно красной или зеленой только стрелку через УФ нельзя. Но можно добавить стрелки и сделать другим цветом весь шрифт в ячейке(как в примере). В примере в правилах УФ смотреть форматы -вкладки Число и Шрифт.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Андрей Нечитаев написал: А как по другому можно запускать данный макрос на всех книгах открывающихся?
да никак, если хотите кнопками запускать. Если правильно сделать надстройку - то коды из неё будут её кнопками запускаться без проблем. Я же ссылку на статью с примерами дал - там не так сложно разобраться вроде.
При протягивании столбца из цифр, в строке формул появляется много знаков после запятой, Эксель произвольно добавляет знаки после запятой в строке формул. Убрать знаки после запятой, которые отображаются в строке формул
Jack Famous написал: Excel перестаёт ручаться только после 15го знака
Уточню: начиная с 15-го Ну а теперь так и вовсе чудит в новых версиях. У меня уже на 12-м знаке были чудеса отображения. Например, если из "100760,8" вычесть "100760,7", получалось замечательное "0,100000000005821". Ну а фокусы с числами вроде "8192,71028" уже разбирались - Excel просто не в состоянии отобразить некоторые числа в нужной разрядности. Например, число "37869,598". Его тоже нельзя ввести в ячейку "As-Is". Да и вообще можно поэкспериментировать и повводить в ячейку любые числа в диапазоне от 33000 до 65000 с дробными значениями ",098", ",848", ",473"
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
При протягивании столбца из цифр, в строке формул появляется много знаков после запятой, Эксель произвольно добавляет знаки после запятой в строке формул. Убрать знаки после запятой, которые отображаются в строке формул
Вам для начала на шаге 1 надо выделить ячейку В1, а не А1, чтобы результат формулы оказался в ячейке, отличной от той, в которой исходное значение. После того, как в В1 введете формулу: = ОКРГУЛ(A1;2), протягиваете её до конца таблицы. После этого копируете столбец В, выделяете столбец А -правая кнопка мыши -Специальная вставка -Значения. После этого столбец В можно удалить.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
написал: функция у меня аналогичная, что представлена в Вашей ссылке
ну да. Но ссылку я дал, чтобы Вы внимательно прочитали и поняли принцип. 1. Если указанного листа нет в книге - будет ошибка. Например, это происходит с листом " (АНЭ)". В книге у него впереди есть пробел - в формуле нет. 2. Там так же указано:
Цитата
Важно: если в имени листа встречается пробел, либо иной знак препинания, то имя листа необходимо заключать в апострофы
а пробелы есть. В итоге, если записать формулу так:
При протягивании столбца из цифр, в строке формул появляется много знаков после запятой, Эксель произвольно добавляет знаки после запятой в строке формул. Убрать знаки после запятой, которые отображаются в строке формул
Андрей Нечитаев написал: при нажатии кнопки надстройки на панели
не нашел ни одной кнопки, которая бы создавалась для этой надстройки. Только макросы. А кнопки, скорее всего Вы создали просто в своем Excel и назначили им макросы из этого файла. Надстройки делаются чуть иначе: Как создать свою надстройку?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
написал: а в свой макрос первой строкой напишите qq
Application.Caller не сработает, т.к. не все фигуры в книге будут опознаны по локальному имени. А еще ТС не учел тот момент, что на листе есть и другие фигуры(а-ля фирменные леблы).
Выделяете все ячейки столбца В - с В4 и до последней ячейки таблицы(в примере это В4:В23) клавиша F5 -Выделить -Пустые ячейки -Ок. Сразу после этого(не снимая выделения) переходите в строку формул и ставите =В4(т.е. ссылку на ячейку выше первой пустой выделенной). Завершаете ввод обязательно путем нажатия сочетания клавиш Ctrl+Enter. После этого останется только выделить все ячейки -Скопировать -Специальная вставка -Значения.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Ничего не понятно, но очень интересно. Если по сути. Anton, если бы Вы сами сейчас ничего не зная про задачу прочли подобную постановку - Вы бы поняли что именно надо? Я вот не понял. То ли какой-то фильтр заново установить на все видимые листы(какой и откуда брать его предыдущие значения?), то ли отобразить какие-то листы в каком-то порядке(в каком и откуда брать?). И главное - в какой момент это все делать и откуда это все брать вообще? Если повторное - значит когда-то это делалось и надо повторить. Когда делалось, как понять, как именно делалось и когда надо повторить?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
написал: не могу понять в чём дело и как исправить
дело в том, что буква "д" воспринимается как код "ДЕНЬ" и вместо "д" подставляется порядковый номер дня текущей даты. Укажите слешем, что "д" не надо преобразовывать(так же, как это сделано с буквой "г"):
Проблема как минимум в том, что Вы не указали как другим(кроме Вас) понять, что костюм взяли и не вернули. Сидеть и разбираться в таблицах на нескольких листах желание будет не у многих...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Цикл лишний, равно как и Selection в такой реализации. Попробуйте так - должно быть в разы быстрее:
Код
Public Sub Convert()
Dim rRange As Range
Set rRange = Intersect(Selection, ActiveSheet.UsedRange)
rRange = rRange.Value
rRange.FormulaLocal = rRange.FormulaLocal
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
На всякий случай лучше применять Application.Subtotal - чтобы уж максимально приблизиться к итогам, которые выдает умная таблица. Или хотя бы учитывать тот факт, что СУММ, МАКС и иже с ними при отфильтрованной таблице будут выдавать сумму и максимум по ВСЕЙ таблице, а ПРОМЕЖУТОЧНЫЕ.ИТОГИ(Subtotal) - только по отфильтрованным:
В чем именно Вы усмотрели агрессию? Если приведенная в сообщении выше аналогия чем-то оскорбила - я, конечно, приношу искренние извинения. И в мыслях не было обидеть хоть как-то.
Я аналогией обозначил, что несмотря на кажущуюся схожесть продуктов - они могут очень сильно различаться не только функционалом, но даже и реализацией этого функционала, даже если на первый вид все выглядит точно так же. Я даже написал, в какую сторону имеет смысл смотреть - если нет возможности создания прямых ссылок, возможно есть некие функции, которые это делают(на примере функции Google). Ну а получить конкретный ответ по onlyoffice в ветке по Excel шансов очень мало. На что я и намекнул P.S.-ом.
жигули вроде тоже полная копия Fiat, однако давно уже едет не так и обслуживание другое Не примите за стеб, но если как в Excel не работает - значит такого механизма в программе либо нет вовсе, либо как в Гугл делается через спец.функцию(в гугле это IMPORTRANGE).
P.S. И да, здесь форум по Excel, а не всему, что на него похоже