Страницы: 1
RSS
Вставка из textbotx в разные ячейки
 
Добрый день,
помогите пожалуйста решить задачу:
Пользователь вставляет в textbox из буфера. Там находится примерно такая инфа:
Текст1
Текст2
Текст3
Надо чтоб это автоматически добавилось в ячейки A1, A2, A3.

При классическом присвоении он вставляет весь текст только в A1, а надо чтоб во все...
 
Какой критерий деления текста?
 
Пользователь скопирует свой текст и вставит в textbox. Копировать будет из своего экселя. К примеру, выделит три ячейки. Скопирует. Вставит в текстбокс на форме. Из формы текст автоматически должен вставиться в другую книгу в определённый лист.  
 
А может знаете как копировать из текстбокса построчно?  :)  
 
пробуйте это:
Код
Sub InsTxtTo(rg As Range, txt$, Optional Separ$ = " ")
  Dim ar:  ar = Split(txt, Separ)
  If UBound(ar) > 0 Then rg.Resize(UBound(ar) + 1, 1).Value = WorksheetFunction.Transpose(ar) Else rg = ar
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
этот код в какое место вставлять? Это идёт как отдельный макрос?
 
макрос положите в стандартный модуль
выполните его любым доступным способом передав необходимые параметры
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Какие параметры ему передать и каким образом?
У меня textbox1
Пользователь вставляет в него свою инфу из буфера обмена. До сих пор всё получилось.
Дальше надо:
В ячейку A1 вставляется то что было в первой строчке
В ячейку A2 вставляется то что было во строчке
В ячейку A3 вставляется то что было в третьей строчке

Если даю ему команду
Код
Range("A1") = textbox1.value
то он копирует весь текст в А1
 
InsTxtTo [a1], textbox1.value, vblf
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
В понедельник вернусь, пока спасибо.
 
В общем получилось стандартным способом. Предварительно скопировать с инсточника
Код
Sub Macro()

    Range("A1").Select
    ActiveSheet.Paste

End 
Работает если копировать с блокнота или других редакторов. Если копировать с экселя, то выходит ошибка, потому что после выбора макроса копирование отключается.
Т.е. этот способ без использования текстбокса...  
Изменено: valentinM - 18.04.2018 11:54:46
 
Цитата
valentinM написал:
В общем получилось стандартным способом. Предварительно скопировать с инсточника

Валентин, я не очень понимаю, что у Вас получилось.
Вы задали задачу копирования данных из текстбокса в ячейки построчно с разбивкой.
Вы привели пример обычной записи макроса со вставкой в ячейку того, что было в буфере в неизменном виде.
Т.к. в буфере каждое значение стоит на новой строке Excel автоматически переносит его на ячейку ниже.
Изменено: ProFessor - 18.04.2018 12:01:38
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
получилось решить проблему - вставки в эксель из буфера.(Я понял почему не получалось. так как при вызове макроса копирование анулируется)
Решить как из textbox построчно ввести значения в ячейки по очереди мне не удалось. Хотелось бы решить, т.к. использование текстбокс удобней будет пользователю добавлять новые строчки. Если оставить только из буфера, то получится чуть однобоко.
Код который прислал Ігор Гончаренко я не понял
Изменено: valentinM - 16.05.2018 10:15:36
 
Я понял Вас.
Насколько Вы хорошо знаете макросы?
Вечером спокойно отвечу и напишу макрос, если никто не ответит ранее. Он очень простой.
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
Думал что умею разбираться в коде, пока мне не подсказали тот код. Понял, что не всё знаю.
Изменено: valentinM - 16.05.2018 10:15:49
 
ProFessor, вы где?
 
Добрый день,
Извиняюсь за затягивание решения:

Вот вариант с проставление данных из textbox по найденному пробелу. Пробел можете поменять на любой разделитель

Код
xs = TextBox1.Value
i = 1
Do While InStr(xs, " ") <> 0
        num = InStr(xs, " ")
        xsx = Left(xs, num - 1)
        ThisWorkbook.Sheets(1).Cells(i, 1) = xsx
        xs = Right(xs, Len(xs) - num)
i = i + 1
Loop
ThisWorkbook.Sheets(1).Cells(i, 1) = xs
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
Вам надо что-то такое?
Изменено: panix1111 - 20.04.2018 10:02:53
Мы в Екселе не работаем, мы в нём живём!
 
panix1111,
У Вас значение текстбокса вставляется в нужную ячейку без разделения
Это не подойдёт автору
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
К сожалению, автор немного не ясно изложил, что именно ему подойдет. Воможно, именно это, но может и  ваш вариант.
Изменено: panix1111 - 20.04.2018 10:07:21
Мы в Екселе не работаем, мы в нём живём!
 
В общем, вот что нужно автору:

Код
xs = TextBox1.Value
i = 1
Do While InStr(xs, Chr(10)) <> 0
        num = InStr(xs, Chr(10))
        xsx = Left(xs, num - 1)
        ThisWorkbook.Sheets(1).Cells(i, 1) = Trim(xsx)
        xs = Right(xs, Len(xs) - num)
i = i + 1
Loop
ThisWorkbook.Sheets(1).Cells(i, 1) = Trim(xs)
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
Цитата
panix1111 написал:
К сожалению, автор немного не ясно изложил, что именно ему подойдет. Воможно, именно это, но может и  ваш вариант.

Цитата
valentinM написал:
В ячейку A1 вставляется то что было в первой строчке
В ячейку A2 вставляется то что было во строчке
В ячейку A3 вставляется то что было в третьей строчке

В данном случае автор вполне понятно излагает свою задачу
Изменено: ProFessor - 20.04.2018 10:11:09
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
Работает скрипт от ProFessor, спасибо! Спасибо всем!  
Страницы: 1
Наверх