Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 18:30   #1
Tirendus
Форумчанин
 
Аватар для Tirendus
 
Регистрация: 20.03.2009
Сообщений: 272
Радость текст из нескольких ячеек в одну

сабж, облазил пол справки, так и не нашел как скопировать текст из ячейки и вставить его в другую без замещения, а через запятую. Помогите плз
Tirendus вне форума Ответить с цитированием
Старый 16.04.2009, 18:35   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
скопировать текст из ячейки и вставить его в другую без замещения
Ничего не понял...
Давай подробнее.
К примеру, выделяем ячейки с a5 по a7, нажимаем Копировать, выделяем ячейку e2, и нажимаем некую комбинацию клавиш, в результате чего в ячейке e2 появляется содержимое ячеек a5, a6 и a7 через запятую.
Пробелы после запятых ставить?

Последний раз редактировалось EducatedFool; 14.06.2009 в 10:06.
EducatedFool вне форума Ответить с цитированием
Старый 16.04.2009, 18:39   #3
Tirendus
Форумчанин
 
Аватар для Tirendus
 
Регистрация: 20.03.2009
Сообщений: 272
По умолчанию

Цитата:
Ничего не понял...
Да нет, всё правильно Еще было бы здорово, если бы при таком действии, что ты описал сохранялся цвет текста... да, пробелы после запятых нужны
Tirendus вне форума Ответить с цитированием
Старый 16.04.2009, 19:07   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот весь код:
Код:
Public ra As Range

Sub Копирование()
    Set ra = Selection
    Application.StatusBar = "Скопирован диапазон " & ra.Address
End Sub

Sub Вставка()
    Dim cell As Range, acell As Range: delim = ", ": Set acell = ActiveCell
    If ra Is Nothing Then Exit Sub
    Dim fc As Range, pos As Long: Set fc = ra.Cells(1)
    For Each cell In ra.Cells: txt = txt & delim & cell.Value: Next
    txt = Mid(txt, Len(delim) + 1): acell.Value = txt

    For Each cell In ra.Cells
        l = Len(cell.Value): s = pos + 1: e = s + l
        acell.Characters(s, l).Font.Color = cell.Font.Color
        acell.Characters(s, l).Font.Bold = cell.Font.Bold
        pos = pos + l + Len(delim)
        acell.Characters(e, Len(delim)).Font.Color = vbBlack    ' запятые чёрным цветом
    Next
    Application.StatusBar = False
End Sub


Private Sub Workbook_Open()
    Application.OnKey "^+c", "Копирование"
    Application.OnKey "^+v", "Вставка"
End Sub
Пример и описание во вложении:
Вложения
Тип файла: rar Расширенное копирование.rar (9.3 Кб, 107 просмотров)
EducatedFool вне форума Ответить с цитированием
Старый 16.04.2009, 19:09   #5
Tirendus
Форумчанин
 
Аватар для Tirendus
 
Регистрация: 20.03.2009
Сообщений: 272
По умолчанию

спасибо, сейчас посмотрю

супер вообще)) приду домой, буду учить твой код, мб что-то пойму

Последний раз редактировалось Tirendus; 16.04.2009 в 19:12.
Tirendus вне форума Ответить с цитированием
Старый 23.12.2009, 13:57   #6
Алекс14
Пользователь
 
Регистрация: 23.12.2009
Сообщений: 21
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Вот весь код:
Код:
Public ra As Range

Sub Копирование()
    Set ra = Selection
    Application.StatusBar = "Скопирован диапазон " & ra.Address
End Sub

Sub Вставка()
    Dim cell As Range, acell As Range: delim = ", ": Set acell = ActiveCell
    If ra Is Nothing Then Exit Sub
    Dim fc As Range, pos As Long: Set fc = ra.Cells(1)
    For Each cell In ra.Cells: txt = txt & delim & cell.Value: Next
    txt = Mid(txt, Len(delim) + 1): acell.Value = txt

    For Each cell In ra.Cells
        l = Len(cell.Value): s = pos + 1: e = s + l
        acell.Characters(s, l).Font.Color = cell.Font.Color
        acell.Characters(s, l).Font.Bold = cell.Font.Bold
        pos = pos + l + Len(delim)
        acell.Characters(e, Len(delim)).Font.Color = vbBlack    ' запятые чёрным цветом
    Next
    Application.StatusBar = False
End Sub


Private Sub Workbook_Open()
    Application.OnKey "^+c", "Копирование"
    Application.OnKey "^+v", "Вставка"
End Sub
Пример и описание во вложении:
Супер воще.
А вот этот диапозон
Цитата:
delim = ", "
как сделать, чтобы был перенос текста на новую строку внутри заданного параметра?
Алекс14 вне форума Ответить с цитированием
Старый 23.12.2009, 14:54   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
как сделать, чтобы был перенос текста на новую строку внутри заданного параметра?
delim = vbLf
EducatedFool вне форума Ответить с цитированием
Старый 24.12.2009, 12:53   #8
Алекс14
Пользователь
 
Регистрация: 23.12.2009
Сообщений: 21
По умолчанию

Благодарю, это то что я искал.
Спасибо.
Всех с наступающим Новым Годом.
Алекс14 вне форума Ответить с цитированием
Старый 20.01.2016, 13:06   #9
Viktorkv
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 62
По умолчанию

Здравствуйте! Помогите изменить макрос. Нужно, что бы в выбранном диапазоне копировались только уникальные значения.
Viktorkv вне форума Ответить с цитированием
Старый 20.01.2016, 16:04   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub CopyUnique()
  Dim rg As Range, c As Range, u As Range, d
  Set rg = Selection
  Set d = CreateObject("scripting.dictionary")
  For Each c In rg
    If Not IsEmpty(c) Then
      If Not d.exists(c.Value) Then d.Add c.Value, 1:  If u Is Nothing Then Set u = c Else Set u = Union(u, c)
    End If
  Next
  u.Copy
End Sub
выбранный диапазон должен содержать 1 колонку или 1 строку данных
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка, состоящая из нескольких слов. Найти количество слов, которые содержат хотя бы одну букву "А" Mashaa Помощь студентам 13 09.12.2009 13:28
Как узнать какой текст выделен в текст поле mogul82 JavaScript, Ajax 2 02.11.2008 16:32
Создание списка из нескольких ячеек DragonTM Microsoft Office Excel 6 30.10.2008 15:46
Сведение нескольких таблиц в одну Sega Microsoft Office Excel 3 05.08.2008 15:21
Фиксирование нескольких ячеек lusui HTML и CSS 4 22.01.2008 17:54