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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2012, 13:01   #11
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

Может ли кто-нибудь переписать данную функцию, чтобы она стала макросом?
Тандер вне форума Ответить с цитированием
Старый 02.11.2012, 23:14   #12
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Тандер Посмотреть сообщение
А макросом можно обновление сделать? Или просто поставить на кнопку F9?

Даты вставляются другим макросом, поэтому такая ситуация.

Значение имеет последняя из дат, но спицифика работы макроса такова, что вставляются поэтапно каждая из дат. Сегодгя одна, завтра другая (если есть) и т.д.
Так может как раз надо переписать тот макрос, который добавляет дату в примечание таким образом, чтобы сначала примечание очищалось, а потом вставлялась последняя дата?
strannick вне форума Ответить с цитированием
Старый 03.11.2012, 12:36   #13
ikki_pf
Форумчанин
 
Регистрация: 25.02.2012
Сообщений: 166
По умолчанию

Цитата:
Сообщение от Тандер Посмотреть сообщение
Даты вставляются другим макросом,
я так понимаю, на лимит строк в примечании еще не нарывались?
ikki_pf вне форума Ответить с цитированием
Старый 03.11.2012, 14:42   #14
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Интересно - на
http://office.microsoft.com/en-us/ex...010073849.aspx
ни слова нет про ограничения в примечаниях. Но они есть, сталкивался.
Но впрочем возможно тот макрос оставляет например только 31 последнюю строку, ну а длина строк естественно не будет большой
По задаче - не вижу конкретики. Что должен делать макрос? С UDF просто - как укажете, так и будет. С макросом сложнее...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.11.2012, 11:54   #15
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

С ограничениями в примечаниях пока не сталкивался.

Hugo121, спасибо за вашу помощь, вроде все работает как надо. Единственное, подскажите, пожалуйста строку для макроса, которая бы оставляла только последние 100 строк в примечании. Мой макрос этого не умеет, а колличество примечаний растет.
Тандер вне форума Ответить с цитированием
Старый 05.11.2012, 12:20   #16
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Тандер? перечитайте мое сообщение #9.
Вы любите приключения, Вы будете продолжать черпать их полными горстями, пока не решите, как правильно организовать данные.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 05.11.2012, 13:35   #17
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вы бы показали свой "неумелый" код.
Пока такой алгоритм, может приладите в свой:

Код:
Sub editcomment()
    Dim r As Range, s$, arr
    s = "new line in comment"
    Set r = [a1]
    arr = Split(StrReverse(r.Comment.Text), vbLf)
    If UBound(arr) > 98 Then    'если уже сотня или больше
        ReDim Preserve arr(98)    'обрезаем лишнее
    End If
    r.Comment.Text Text:=StrReverse(Join(arr, vbLf)) & vbLf & s
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 05.11.2012 в 13:40.
Hugo121 вне форума Ответить с цитированием
Старый 05.11.2012, 13:39   #18
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
насколько я понял даты в примечания Вы ручками пишете, вы не получаете столбец с этими данными уже в таком виде?
Даты заполняются другим макросом.

Цитата:
Сообщение от IgorGO Посмотреть сообщение
тогда что мешает написать их в ячейку. и след. вопрос, зачем они все нужны, если значение имеет только последняя из них?
Значение имеет последняя из них, как для отчета. Но так же имееют значения и остальные, когда нужно глянуть какого числа было то или инное действие.

Игорь, я понимаю, о чем вы хотите сказать, но я не знаю, как это можно организовать так, чтобы не было ничего лишнего на листе. И к тому же макросы уже все написаны под примечания.

Последний раз редактировалось Тандер; 05.11.2012 в 13:41.
Тандер вне форума Ответить с цитированием
Старый 05.11.2012, 13:45   #19
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Вы бы показали свой "неумелый" код.
Извените, забыл сразу написать:


Код:
sub q()
Dim i&
On Error Resume Next
For i = 10 To 100
If Cells(i, 13) = 15 Then
Cells(i, 13) = Cells(i, 13) + 1
If Cells(i, 13).Comment Is Nothing Then
With Cells(i, 13).AddComment
.Visible = False
.Text Cells(10, 10).Value & Chr(10)
Cells(i, 13).Comment.Shape.TextFrame.Characters.Font.Bold = True
End With
Else
Cells(i, 13).Comment.Text Cells(i, 13).Comment.Text & Cells(10, 10).Value & Chr(10)
End If
End If
Next
End Sub
Тандер вне форума Ответить с цитированием
Старый 05.11.2012, 14:04   #20
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Попробуйте "в бою" - может быть нужно подкорректировать эти Chr(10) (я не проверял):

Код:
Sub q()
    Dim i&
    On Error Resume Next
    For i = 10 To 100
        If Cells(i, 13) = 15 Then
            Cells(i, 13) = Cells(i, 13) + 1
            If Cells(i, 13).Comment Is Nothing Then
                With Cells(i, 13).AddComment
                    .Visible = False
                    .Text Cells(10, 10).Value & Chr(10)
                    Cells(i, 13).Comment.Shape.TextFrame.Characters.Font.Bold = True
                End With
            Else
                comment_add Cells(i, 13), Cells(10, 10).Value & Chr(10)
            End If
        End If
    Next
End Sub

Private Sub comment_add(r As Range, s$)
    Dim arr
    arr = Split(StrReverse(r.Comment.Text), vbLf)
    If UBound(arr) > 98 Then    'если уже сотня или больше
        ReDim Preserve arr(98)    'обрезаем лишнее
    End If
    r.Comment.Text Text:=StrReverse(Join(arr, vbLf)) & vbLf & s
End Sub
Ну в общем-то конечно если ещё нет 100 строк, то можно просто к комменту добавить строку, а не крутить-вертеть массив, но так код на две строки короче
Да и на таком объёме падения скорости не заметите.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 05.11.2012 в 14:13.
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Паскаль-обработать и отсортировать данные об участниках соревнований subzero95 Паскаль, Turbo Pascal, PascalABC.NET 4 13.04.2012 00:22
Возможно ли связать данные двух листов? daria m Microsoft Office Excel 1 18.01.2012 04:25
Считать и обработать данные из файла EXCEL CJ ALEX R Помощь студентам 4 14.08.2011 13:04
Как обработать данные с форм в php Hichigo PHP 3 25.07.2010 03:39
Возможно ли востановить данные в Excel? vovikbvovikb Помощь студентам 0 08.08.2009 09:53