Есть ли возможность писать лог в примечаниях этим кодом или модифицированным ?
[vba]
Код
Private s$ Private Sub Worksheet_Change(ByVal Target As Range) Dim oComment As Comment, un$ On Error Resume Next Set oComment = Target.Comment un = WorksheetFunction.VLookup(GetUserName_3(2), Лист4.[A2:B999], 2, False) If oComment Is Nothing Then Set oComment = Target.AddComment(un & " " & Format(Now, "dd.mm.yy HH:MM") & ":" & Chr(10) & s & "-->>" & Target.Text) oComment.Shape.TextFrame.AutoSize = True Else oComment.Text oComment.Text & Chr(10) & un & " " & Format(Now, "dd.mm.yy HH:MM") & ":" & Chr(10) & s & "-->>" & Target.Text oComment.Shape.TextFrame.AutoSize = True End If
Intersect(Columns("i"), Target(1)).Offset(, 1) = Now
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) s = Target.Cells(1, 1) End Sub
[/vba]
только что-бы индикаторы не отображались или были белого цвета ?
в файле пароль пользователь 444 админ 555
Здравствуйте.
Есть ли возможность писать лог в примечаниях этим кодом или модифицированным ?
[vba]
Код
Private s$ Private Sub Worksheet_Change(ByVal Target As Range) Dim oComment As Comment, un$ On Error Resume Next Set oComment = Target.Comment un = WorksheetFunction.VLookup(GetUserName_3(2), Лист4.[A2:B999], 2, False) If oComment Is Nothing Then Set oComment = Target.AddComment(un & " " & Format(Now, "dd.mm.yy HH:MM") & ":" & Chr(10) & s & "-->>" & Target.Text) oComment.Shape.TextFrame.AutoSize = True Else oComment.Text oComment.Text & Chr(10) & un & " " & Format(Now, "dd.mm.yy HH:MM") & ":" & Chr(10) & s & "-->>" & Target.Text oComment.Shape.TextFrame.AutoSize = True End If
Intersect(Columns("i"), Target(1)).Offset(, 1) = Now
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) s = Target.Cells(1, 1) End Sub
[/vba]
только что-бы индикаторы не отображались или были белого цвета ?
в файле пароль пользователь 444 админ 555koyaanisqatsi
что-бы индикаторы не отображались или были белого цвета
[vba]
Код
Sub скрыть_ярлычки_примечаний() Application.DisplayCommentIndicator = xlNoIndicator 'xlCommentAndIndicator - показать комментарии и ярлычки 'xlCommentIndicatorOnly - показать только ярлычки. 'xlNoIndicator - скрыть комментарии и ярлычки End Sub
[/vba]
*но лучше хранить историю изменений на другом, скрытом листе, если действительно скрытность требуется.
что-бы индикаторы не отображались или были белого цвета
[vba]
Код
Sub скрыть_ярлычки_примечаний() Application.DisplayCommentIndicator = xlNoIndicator 'xlCommentAndIndicator - показать комментарии и ярлычки 'xlCommentIndicatorOnly - показать только ярлычки. 'xlNoIndicator - скрыть комментарии и ярлычки End Sub
[/vba]
*но лучше хранить историю изменений на другом, скрытом листе, если действительно скрытность требуется.al-Ex
Сообщение отредактировал al-Ex - Вторник, 17.05.2016, 01:14
ИМХО, не самая удачная мысль хранить лог в примечаниях... Ведь каждое примечание - это объект Comment, член коллекции Shape. Короче - рисунок. У вас очень быстро файл так распухнет от множества этих рисунков… Да ещё и объекты Comment обладают гнусной привычкой самопроизвольно "оттягиваться" на стрелке-указке от своих ячеек далеко за границы экрана после проведения операций с ячейками (у меня даже в Personal есть специальный макрос, исправляющий положение примечаний). В общем, реализуете свою идею, поработаете немного, замучаетесь и придётся переделывать.
Как вариант я бы, действительно, предложил хранить логи ячеек нужного листа на скрытом (или шибко скрытом ) листе. Файл почти не "разжиреет". При этом можно достаточно легко реализовать повтор на скрытом листе операций с ячейками/столбцами/строками, проводимых на отслеживаемом листе. А именно такие операции чаще всего вызывают "разбегание" примечаний.
ИМХО, не самая удачная мысль хранить лог в примечаниях... Ведь каждое примечание - это объект Comment, член коллекции Shape. Короче - рисунок. У вас очень быстро файл так распухнет от множества этих рисунков… Да ещё и объекты Comment обладают гнусной привычкой самопроизвольно "оттягиваться" на стрелке-указке от своих ячеек далеко за границы экрана после проведения операций с ячейками (у меня даже в Personal есть специальный макрос, исправляющий положение примечаний). В общем, реализуете свою идею, поработаете немного, замучаетесь и придётся переделывать.
Как вариант я бы, действительно, предложил хранить логи ячеек нужного листа на скрытом (или шибко скрытом ) листе. Файл почти не "разжиреет". При этом можно достаточно легко реализовать повтор на скрытом листе операций с ячейками/столбцами/строками, проводимых на отслеживаемом листе. А именно такие операции чаще всего вызывают "разбегание" примечаний.Alex_ST
al-Ex, История не требует скрытности наоборот хочется прозрачности чтобы все могли видить но никто не мог изменить. Пока что эту историю можно менять. Это не правильно (((
al-Ex, История не требует скрытности наоборот хочется прозрачности чтобы все могли видить но никто не мог изменить. Пока что эту историю можно менять. Это не правильно (((koyaanisqatsi
Alex_ST, На отдельном листе хорошая идея. Но я не знаю как это все реализовывается как смотреть историю чтобы было удобно. Пока попробую таким методом. А там видно будет.
Alex_ST, На отдельном листе хорошая идея. Но я не знаю как это все реализовывается как смотреть историю чтобы было удобно. Пока попробую таким методом. А там видно будет.koyaanisqatsi
Ну, пробуйте пока так. А для борьбы со "съехавшими" примечаниями вот Вам презент из моей заначки: [vba]
Код
Sub Починить_примечания() 'FixComm() '--------------------------------------------------------------------------------------- ' Procedure : Починить_примечания() ' в оригинале - FixComm() ' Author : ' Topic_HEADER : "Как настроить примечания ? " ' Topic_URL : http://www.planetaexcel.ru/forum.php?thread_id=11528&page_forum=3&allnum_forum=66 ' Post_Author : Юрий М ' Post_URL : ' DateTime : 21.06.2010, 01:31 ' Purpose : восстановить нормальное положение "съехавших" примечаний на листе ' Notes : '--------------------------------------------------------------------------------------- Dim iComment As Comment, A_Size As Boolean Select Case MsgBox("Включить у всех примечаний автоподбор размера?", vbYesNoCancel + vbQuestion, "Как настроить примечания?") Case vbCancel: Exit Sub Case vbYes: A_Size = True Case vbNo End Select For Each iComment In ActiveSheet.Comments With iComment.Parent iComment.Shape.Placement = xlMove If A_Size Then iComment.Shape.TextFrame.AutoSize = True iComment.Shape.Top = .Top - 10 iComment.Shape.Left = .Left + .Width + 10 End With Next MsgBox "Положения окон комментариев исправлены!", vbInformation, "" End Sub
[/vba]
Ну, пробуйте пока так. А для борьбы со "съехавшими" примечаниями вот Вам презент из моей заначки: [vba]
Код
Sub Починить_примечания() 'FixComm() '--------------------------------------------------------------------------------------- ' Procedure : Починить_примечания() ' в оригинале - FixComm() ' Author : ' Topic_HEADER : "Как настроить примечания ? " ' Topic_URL : http://www.planetaexcel.ru/forum.php?thread_id=11528&page_forum=3&allnum_forum=66 ' Post_Author : Юрий М ' Post_URL : ' DateTime : 21.06.2010, 01:31 ' Purpose : восстановить нормальное положение "съехавших" примечаний на листе ' Notes : '--------------------------------------------------------------------------------------- Dim iComment As Comment, A_Size As Boolean Select Case MsgBox("Включить у всех примечаний автоподбор размера?", vbYesNoCancel + vbQuestion, "Как настроить примечания?") Case vbCancel: Exit Sub Case vbYes: A_Size = True Case vbNo End Select For Each iComment In ActiveSheet.Comments With iComment.Parent iComment.Shape.Placement = xlMove If A_Size Then iComment.Shape.TextFrame.AutoSize = True iComment.Shape.Top = .Top - 10 iComment.Shape.Left = .Left + .Width + 10 End With Next MsgBox "Положения окон комментариев исправлены!", vbInformation, "" End Sub
Alex_ST, Большое спасибо, пол дня искал как вернуть уехавшие примечания, и нашел почти случайно! Отлично всё работает, очень помог! Добавьте в отдельную тему!!!
Alex_ST, Большое спасибо, пол дня искал как вернуть уехавшие примечания, и нашел почти случайно! Отлично всё работает, очень помог! Добавьте в отдельную тему!!!romlazo
Смысла нет. В самом начале "жизни" форума я много разных "полезняшек" из своей заначки оформлял отдельными постами с подробными описаниями назначения и выкладывал их в раздел "Готовые решения". Но со временем раздел так разросся, что найти там что-то конкретное стало очень трудно, тем более, что многие авторы топиков не сильно заморачиваются придумыванием интуитивно понятных названий топиков, составлением описаний назначения процедур и уж тем более - комментированием кода.
Смысла нет. В самом начале "жизни" форума я много разных "полезняшек" из своей заначки оформлял отдельными постами с подробными описаниями назначения и выкладывал их в раздел "Готовые решения". Но со временем раздел так разросся, что найти там что-то конкретное стало очень трудно, тем более, что многие авторы топиков не сильно заморачиваются придумыванием интуитивно понятных названий топиков, составлением описаний назначения процедур и уж тем более - комментированием кода.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Пятница, 17.05.2019, 09:47