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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2019, 00:00   #1
rediffusion
Пользователь
 
Аватар для rediffusion
 
Регистрация: 30.05.2019
Сообщений: 36
Сообщение Как поправить код: Копировать/Вставить Примечание с одной ячейки в другую [VBA].

Здравья желаю!
Нашёл вот такой код (он работает). Дело в том что он копирует текст 'Примечания' и вставляет в ячейку а не в само 'Примечание' (диапазон можно выбрать из всплывающей формы), 'Примечания' из ячейки удаляет (не хочу чтоб адаляло) ↴

Код:
Sub TestCommentCopy()

Dim r As Range
Dim c As Comment
Set r = Selection

If (Not r.Areas(1).Comment Is Nothing) Then
    Set c = r.Areas(1).Comment
End If

'Set r(1, 2).Comment = c ' Object error
'   r(1, 2).Comment = c  'Object error
'   Set r(1,2).Comment = c ' Object error
r(1, 2).ClearComments ' Works
'   r(1, 2).AddComment c 'Does not work - requires text only

r(1, 2).AddComment c.Text 'Works, but only get plain text, no formatting

End Sub
Есть ли способ в Excel скопировать 'Примечания' одной ячейки и вставить в другую (чтоб диапазон можно было выбрать в форме всплывающей).
1. Чтоб 'Примечания' не удалялось после копирования.
2. Чтоб была проверка имеется ли в копируемой ячейке 'Примечание', чтоб старое удалилось.
3. Чтоб можно было вставить не только в одну ячейку а в столько сколько нужно (выбираем диапазон в форме и вставляем, чтоб не мучиться и не вставлять по одной целый день).
4. Выполнение должно быть в активном листе.
5. Если в ячейке есть записи они не должны затираться.

dbcabb7233.jpg

Нашёл 3 `VBA` кода осталось понять как всё это дело комбинировать!?

1. Этот вариант хороший:
Код:
Sub copyComment_1()
    Range("A1").Copy
    Range("A2").PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End Sub
2. Аналогичная технология + выбор Листа:
Код:
Sub copyComment_2()

    Dim sht As Worksheet
    Dim destRng As Range
    Dim srcRng As Range
    Set sht = ThisWorkbook.Worksheets("Лист2")
    Set srcRng = sht.Range("A1")
    Set destRng = sht.Range("A2")
    srcRng.Copy
    destRng.PasteSpecial xlPasteComments

End Sub
3. Аналогичная технология + выбор Листа (2 метода из них только второй работает как надо):
Код:
Sub copyComment_3()
    Dim strCom As String
    With ThisWorkbook.Worksheets("Лист2")
        'Метод 1
        'Получаем "Примечание" из ячейки A1
        strCom = .Range("A1").Comment.Text
        'Вставляем в ячейку A2 (если в ячейке уже имеется "Примечание" вылетает – ошибка)
        .Range("A2").AddComment strCom
        'Метод 2
        'Копировать/Вставить "Примечание" (этот вариант работате как надо)
        .Range("A1").Copy
        .Range("A2").PasteSpecial xlPasteComments
    End With
End Sub
Помохайте если можете!

Последний раз редактировалось rediffusion; 28.06.2019 в 09:26.
rediffusion вне форума Ответить с цитированием
Старый 28.06.2019, 19:35   #2
rediffusion
Пользователь
 
Аватар для rediffusion
 
Регистрация: 30.05.2019
Сообщений: 36
По умолчанию

!! Я нашёл соответствующую надстройку называется Ablebits. В ней имеется `Comments Manager` это реально удобная штука, гляньте! Мануал тут.
rediffusion вне форума Ответить с цитированием
Старый 01.07.2019, 11:11   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от rediffusion Посмотреть сообщение
Я нашёл соответствующую надстройку называется Ablebits.
и всего 79 долларов?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.07.2019, 11:46   #4
pme
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 11
По умолчанию

Привет!
Цитата:
Сообщение от rediffusion Посмотреть сообщение
Sub copyComment_1()
Код:
Public Function Comment_Copy(ByVal r_Sour As Range, r_Dest As Range)

' пример Вызова Comment_Copy cells(1,1), cells(1,2)

    r_Sour.Copy

    r_Dest.PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False

End Function
pme вне форума Ответить с цитированием
Старый 02.07.2019, 16:02   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Sub gomfckr()
    Dim cl As Range
    With [E11] ' comment to past
        If .Comment Is Nothing Then
            .AddComment
            .Comment.Visible = True
        End If
        Set cl = [b8] ' comment copy from
        If Not cl.Comment Is Nothing Then
            .Comment.Text Text:= _
                cl.Comment.Text
        Else
            .Comment.Text Text:="EMPTY TEXT"
        End If
            
    End With
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 23.07.2019, 10:11   #6
rediffusion
Пользователь
 
Аватар для rediffusion
 
Регистрация: 30.05.2019
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
и всего 79 долларов?
Тут можно скачать бесплатно!
rediffusion вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматически копировать строки из одной книги excel в другую get12 Microsoft Office Excel 2 27.09.2011 19:52
Копировать и вставить из одной формы в другую scarp55 Microsoft Office Access 5 06.04.2011 16:03
Копировать и вставить из одной формы в другую scarp55 Microsoft Office Excel 0 29.03.2011 20:45
как копировать данные из одной таблоицы в другую MixanMM БД в Delphi 3 30.07.2010 10:47
Как логически копировать из одной ячейки в другую? nicuav Microsoft Office Excel 10 27.06.2010 11:23