Вылетает иногда "формула", я так сцепку называю(
Определённое пользователем количество символов в формуле
Определённое пользователем количество символов в формуле
30.09.2018 13:41:32
Вообще цель макроса упростить работу и записать формулу с соответствующим префиксом и с соответствующим количеством символов в строке.
Т.е. я открываю таблицу, запускаю макрос и на второй странице записывается формула с которой я продолжу работать в другой программе, при этом мне нельзя превышать количество символов в строке и терять какие-либо данные. Сам я начал попытке по записи этого макроса в начале сентября, но встрял, макрос выглядел так:
Позже в него были добавлены Case функции. Но теперь встала новая задача, в этом макросе идёт сцепка только 3-х столбцов, меня это не устраивает, т.к. их в таблице их может быть больше 3-х, а как я говорил ранее данные терять нельзя, я начал искать как сцепить все ячейки слева от активной, и ничего не нашёл. При том остаётся вопрос по количеству символов в строке, если будет больше 80 в CN, то при работе в другой проге будет ошибка. Может будет проще если добить до конца мой первый макрос? Знаете как сцепить все не пустые ячейки слева от активной на языке VBA. Учитывая что есть ограничения по символам, и если есть превышение начать деление на строки ниже с сохранением соответствия к ШК? Я вложил изображение, надо чтобы ШК остался, но "лишние" 11 символов перешли на строку ниже с этим же ШК и с такой же формулой. Юрий М, Вы сделали почти то что надо, вот только Ваш код использует уже готовую формулу, удаляет её и записывает на уже существующий лист, а надо сцепка происходило на создаваемом листе, и не должны корректироваться исходные данные.
Изменено: |
|||
|
Определённое пользователем количество символов в формуле
Определённое пользователем количество символов в формуле
Определённое пользователем количество символов в формуле
Определённое пользователем количество символов в формуле
Определённое пользователем количество символов в формуле
16.09.2018 21:51:29
cn - не больше 80 cd - не больше 255 fn - не больше 80 fd - не больше 255 И при каждом вводе от пользователя не сцепка должна начинаться с соответствующим префиксом. Например ввожу fn: ="fn;"&..... ( и не больше 80-ти символов, всё что больше, переносится на строку ниже с соответствующим ШК как продолжение описания) Ввожу cd: ="cd;"&.... ( и не больше 255 символов, всё что больше, переносится на строку ниже с соответствующим ШК как продолжение описания) И так же с остальными 2-мя префиксами |
|||
|
Определённое пользователем количество символов в формуле
Определённое пользователем количество символов в формуле
Определённое пользователем количество символов в формуле
Определённое пользователем количество символов в формуле
Определённое пользователем количество символов в формуле
15.09.2018 23:07:59
Это описание разбито на разные столбцы (количество столбцов варьируется), я вручную записываю формулу сцепки, перед этим дописывая ="cn;"&.... (вообще префикса 4, они зависят от того, кому принадлежат ШК). Я каждый раз вручную переношу всю информацию с одного листа на другой и начинаю сцеплять, при этом, если я записываю префикс CN (к примеру) - количество символов в строке с формулой (без учёта ="cn;" не должно превышать 80 символов. Если есть превышение в символах, я начинаю самостоятельно добавлять ниже строку, копировать ниже ШК, и ниже описание (т.е. его продолжение). Я решил написать код в VBA, который бы делал это всё за меня, а именно делал бы готовую формулу с нужным количеством символов на втором листе. Я написал код, который копирует значение на второй лист, запрашивает у пользователя префикс ( через select case) и начинает сцеплять "описание" с тем префиксом что ввёл пользователь. НО, я не знаю как автоматизировать обрезку символов по нужному мне количеству в строке. Т.е. если я указываю в диалоговом окне "cn" - то в каждой строке описания должно быть не более 80 символов. Всё, что превышает должно копироваться ниже вместе с ШК и записываться в такую же формулу. Задача не простая и как по мне специфическая, я не нашёл ничего похожего в интернете и вот я здесь( Пытаюсь объяснить как можно понятнее. (во вложении файл с исходными данными и нужным результатом)
Изменено: |
|||||
|
Определённое пользователем количество символов в формуле
Определённое пользователем количество символов в формуле
15.09.2018 14:01:08
Я не знаю как сделать в Excel, чтобы формула (записанная через макрос) понимала сколько символов она сцепляет и начинала переносить на строки ниже продолжение( В скрине я перевёл форматы ячеек в текстовый и поделил самостоятельно. Может так будет яснее, сам макрос должен импортировать в специальную прогу описание ШК (столбец в примере), и именно к нужному штрих-коду нужное описание. Надо чтобы в результате макрос сам понимал что описание к определённому штрих-коду превышает допустимое количество символов и начинал делить строки. Так же приложил макрос который делает нечто похожее, но не отдельную странице, а в текстовый документ (после создания интересен лист CD).
Во вложении файл, может с ним яснее будет (внутри два макроса) |
|||||
|
Определённое пользователем количество символов в формуле
15.09.2018 11:59:03
Есть 4 префикса, на основании которых должна происходить корректировка длины строки по символам. Эти префиксы запрашиваются через диалоговое окно у пользователя, и на основании ввода одного из них, на втором листе должна происходить сцепка (как в примере). Сцепка должна учитывать указанный пользователем префикс : если fn/cn - не больше 80, если cn/cd - не больше 255. При том количество столбцов в сцепке может варьироваться от 2-х до 6 (примерно) и надо чтобы формула сцепки ничего не упустила и не захватила лишнего. Во вложенном файлике пример, (от которого может заболеть сердце) первоначальной версии макроса (без ветвлений), потом были изменения, на надеюсь проблема станет понятней) |
|||
|
Определённое пользователем количество символов в формуле
15.09.2018 11:41:36
То есть он должен понять, что строка превышает допустимые 80, и начать делить её в строки ниже как продолжение. И как закончит с делением одной строки, продолжить формулу дальше Я понятия не имею возможно ли это(
Изменено: |
|||
|
Определённое пользователем количество символов в формуле