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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.01.2008, 03:55   #1
pax
 
Регистрация: 05.01.2008
Сообщений: 4
По умолчанию Как вывести примечание в ячейку?

Доброго времени суток, люди.
Подскажите пожалуйста, можно ли вывести причемачние к ячейке в саму ячейку?

Задача такова:
есть тысяча строчек и один столбец. К каждой ячейке есть примечание, нужно сделать так что бы это примечание было в самой ячейке.

Спасибо!
pax вне форума
Старый 05.01.2008, 12:47   #2
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

У меня есть 2 макроса. Один копирует значение ячейки в комментарий, а другой комментарий переносит в ячейку. Посмотрите, может они вам помогут. Данные макросы обрабатывают числа, но если вам надо переносить текст в комментарий и обратно, то я думаю, вы сами можете убрать проверку IsNumeric в этих макросах.

Код:
Sub Добавить_комментарий_в_диапазоне()
'копирует значение ячейки в комментарий в видемом диапазоне
    Dim c As Range, cc As Range
    Dim i As Long
    On Error GoTo ErrorHandler
    Application.DisplayCommentIndicator = xlCommentIndicatorOnly
    Set cc = Selection
    'если выделили 1 ячейку
    If cc.Rows.Count = 1 And cc.Columns.Count = 1 Then
        MsgBox "Выделено слишком мало ячеек!", , "Ошибка"
        End
    End If
    Set cc = Selection.SpecialCells(xlCellTypeVisible)
    For Each c In cc
        If IsNumeric(c.Value) And c.Value <> Empty Then
            c.AddComment CStr(c.Value)
            i = i + 1
        End If
    Next
    MsgBox "Добавлено " & i & " комментарий!"
    Exit Sub
ErrorHandler:
    If err.Number = 1004 Then
        MsgBox "Удалите предыдущие комментарии и повторите заново!", , "Ошибка"
        Exit Sub
    End If
    MsgBox "Произошла ошибка!!!"
End Sub
Код:
Sub Комментарий_в_ячейку_в_диапазоне()
'переносит комментарий в ячейку
Dim i As Long
Dim c As Range, cc As Range
Dim iCommment As Comments
    On Error GoTo ErrorHandler
    Application.DisplayCommentIndicator = xlCommentIndicatorOnly
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Set cc = Selection
    'если выделили 1 ячейку
    If cc.Rows.Count = 1 And cc.Columns.Count = 1 Then
        MsgBox "Выделено слишком мало ячеек!", , "Ошибка"
        Exit Sub
    End If
    Set cc = Selection.SpecialCells(xlCellTypeVisible)
    For Each c In cc
        If c.Comment Is Nothing Then GoTo lbl
        If IsNumeric(c.Comment.Text) Then
            c.Value = CInt(c.Comment.Text)
           ' c.ClearComments
            i = i + 1
        End If
lbl:
    Next
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    MsgBox "Перенесено " & i & " комментариев!"
    Exit Sub
ErrorHandler:
    MsgBox "Произошла ошибка!!!"
End Sub
Pavel55 вне форума
Старый 05.01.2008, 13:33   #3
pax
 
Регистрация: 05.01.2008
Сообщений: 4
По умолчанию

спасибо за отзывчивость!

Но есть одно но.. Не хочет переводить комментарии в ячейки.

Как вы и сказали, удалил проверку что это номер, код в таком виде:
Код:
Sub Комментарий_в_ячейку_в_диапазоне()
'переносит комментарий в ячейку
Dim i As Long
Dim c As Range, cc As Range
Dim iCommment As Comments
    On Error GoTo ErrorHandler
    Application.DisplayCommentIndicator = xlCommentIndicatorOnly
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Set cc = Selection
    'если выделили 1 ячейку
    If cc.Rows.Count = 1 And cc.Columns.Count = 1 Then
        MsgBox "Выделено слишком мало ячеек!", , "Ошибка"
        Exit Sub
    End If
    Set cc = Selection.SpecialCells(xlCellTypeVisible)
    For Each c In cc
        If c.Comment Is Nothing Then GoTo lbl
lbl:
    Next
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    MsgBox "Перенесено " & i & " комментариев!"
    Exit Sub
ErrorHandler:
    MsgBox "Произошла ошибка!!!"
End Sub
Выделяю ячейки, но пишет Перенесено 0 комментариев.
pax вне форума
Старый 05.01.2008, 16:07   #4
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

А вы выделите диапазон ячеек и запустите макрос в редакторе VBE пошагово (через F8) и нажимайте F8 пока не увидите, где макрос делает что-то не то. А ещё можно выложить небольшой кусок вашей таблицы сюда (в архиве)

Последний раз редактировалось Pavel55; 05.01.2008 в 16:18.
Pavel55 вне форума
Старый 06.01.2008, 00:01   #5
pax
 
Регистрация: 05.01.2008
Сообщений: 4
По умолчанию

вот пример файла.. пишет тоже самое..
Вложения
Тип файла: rar primer.rar (15.5 Кб, 19 просмотров)
pax вне форума
Старый 06.01.2008, 01:39   #6
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Вы удалили слишком много, а именно главную строку, которая и переносит текст из комментария в ячейку. Вот рабочий код

Код:
Sub Комментарий_в_ячейку_в_диапазоне()
'переносит комментарий в ячейку
Dim c As Range, cc As Range
Dim i As Long
    On Error GoTo ErrorHandler
    Application.DisplayCommentIndicator = xlCommentIndicatorOnly
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Set cc = Selection
    'если выделили 1 ячейку
    If cc.Rows.Count = 1 And cc.Columns.Count = 1 Then
        MsgBox "Выделено слишком мало ячеек!", , "Ошибка"
        Exit Sub
    End If
    Set cc = Selection.SpecialCells(xlCellTypeVisible)
    For Each c In cc
        If c.Comment Is Nothing Then GoTo lbl
        c = c.Comment.Text
        i = i + 1
lbl:
    Next
    cc.WrapText = False
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    MsgBox "Перенесено " & i & " комментариев!", vbInformation, "Комментарии"
    Exit Sub
ErrorHandler:
    MsgBox "Произошла ошибка!!!"
End Sub
Вложения
Тип файла: rar primer2.rar (17.3 Кб, 62 просмотров)
Pavel55 вне форума
Старый 06.01.2008, 12:34   #7
pax
 
Регистрация: 05.01.2008
Сообщений: 4
По умолчанию

вот спасибо! выручили=)
pax вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить одинаковое примечание к группе ячеек? Kona Microsoft Office Excel 3 30.10.2008 12:40
вывести префикс соответствующий номеру телефона в отдельную ячейку kutt Microsoft Office Excel 5 11.08.2008 21:07
есть ячейки А, В, С. в ячейку С нужно вывести резултат С=А*В*0,1% А^ександр Microsoft Office Excel 1 18.02.2008 11:12
Как зафиксировать ячейку? gait HTML и CSS 4 22.11.2007 18:14