Нумерация строк.

Автор marina, 23 февраля 2017, 12:35

0 Пользователи и 1 гость просматривают эту тему.

JohnSUN

Точно! Ну, "С Великими Людьми Это Тоже Иногда Случается..." (с) Д.И.Менделеев
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

bsi

ЦитироватьНу, вот так это выглядит:
Посмотрите правильно ли у меня всё сделано.

JohnSUN

Ну, код в документ вставил правильно, а вот с назначением макроса немного промахнулся.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

mikekaganski

... и не забыть, что в последнем диалоге (Настройка, вкладка События) нужно сохранить это безобразие в документе.
С уважением,
Михаил Каганский

bsi

Цитироватьс назначением макроса немного промахнулся
Изменил, но при открытии файла выдаёт ошибку.

mikekaganski

С уважением,
Михаил Каганский

JohnSUN

#21
А скриншот с текстом самой ошибки покажешь?
Забавно... У меня твой файл работает, но проявилась странность, которую засёк mikekaganski - после первого изменения событие не обрабатывается
Цитата: mikekaganski от 24 февраля 2017, 21:31
Уберите oSheet =
Ну да, последняя ошибка в программе всегда только предпоследняя

(Странно, что Basic промолчал невзирая на Option Explicit... Не нравится мне это)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

bsi

ЦитироватьУберите oSheet =
Убрал, но тогда нумерация не работает. Файл во вложении.
ЦитироватьА скриншот с текстом самой ошибки покажешь?
Ошибка во вложении.

economist

Как тут не вспомнить крылатое: "Если можешь не программировать - не программируй!"

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

Если в А7 - стоит № п/п 1, то простая формула ячейкой ниже и даже хоть до последней строки листа

=ЕСЛИ(B8<>"";A7+1;"")

даст быструю и простую нумерацию строк.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

rami

bsi, а сколько строк вам нужно нумеровать? Тысячу хватит? Я тут сбацал макрос, но завяз в разных проверках условий, если ограничиться тысячей строк, то выполнение макроса будет ~ 0,1—0,2 секунды, если десять тысяч строк, то ~ пол-секунды и проверки можно наверно опустить.
Макрос должен работать на всех листах или на одном конкретном?

rami

Цитата: economist от 24 февраля 2017, 19:57Как тут не вспомнить крылатое: "Если можешь не программировать - не программируй!"
Красиво сказано, но не про нас, мы не можем не программировать и поэтому мы здесь 8-) 8-) 8-)

P.S. economist, меня не интересует кто как решает свои проблемы (макросом, формулами или кольтом 8-) ), у нас есть хорошая тема про макросы и мы её обсуждаем в разделе Basic. Формулы это из другой оперы.

bsi

ЦитироватьТысячу хватит?
Вполне.
ЦитироватьМакрос должен работать на всех листах или на одном конкретном?
На одном.

kompilainenn

Цитата: rami от 24 февраля 2017, 20:30P.S. economist, меня не интересует кто как решает свои проблемы (макросом, формулами или кольтом Крутой ), у нас есть хорошая тема про макросы и мы её обсуждаем в разделе Basic. Формулы это из другой оперы.
однако его решение - это тоже решение, мало ли, вдруг пригодится ТС
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Пробуйте такой минималистичный вариант, думаю не сильно плохой :roll:

rami

Цитата: kompilainenn от 24 февраля 2017, 23:01
Цитата: rami от 24 февраля 2017, 20:30P.S. economist, меня не интересует кто как решает свои проблемы (макросом, формулами или кольтом  8-) ), у нас есть хорошая тема про макросы и мы её обсуждаем в разделе Basic. Формулы это из другой оперы.
однако его решение - это тоже решение, мало ли, вдруг пригодится ТС
В данном случае не пригодится, ТС (marina) хотела чтобы пустые ячейки в столбце "B" не нумеровались.

economist предложил два решения: формула из ответа 7 =СМЕЩЕНИЕ(B7;-1;0)+1 не подходит, так как нумерует пустые ячейки (в столбце B), а формула из ответа 23 =ЕСЛИ(B8<>"";A7+1;"") не подходит, так как нумерация прерывается пустой ячейкой (в столбце B) и начинается заново.