2017-01-07 2 views
0

Мне нужна помощь в создании макроса, который будет отображать комментарии, которые находятся в определенных объединенных ячейках. Макрос будет связан с кнопкой, и когда пользователь нажмет кнопку, будут показаны комментарии, которые находятся в определенных объединенных ячейках.Excel Macro, который показывает комментарии определенных ячеек в защищенном режиме

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

Sub Show_Comment() 
On Error Resume Next 
    For Each ws In ActiveWorkbook.Sheets 
     Set allCommentRng = ws.Cells.SpecialCells(xlCellTypeComments) 
     For Each Rng In allCommentRng 
      Rng.Comment.Visible = True 
     Next 
    Next 
On Error GoTo 0 
End Sub 

При этом сказал, что мне нужно знать, как определить определенный слитый диапазон, который имеет комментарий. Первый объединенный диапазон: C7:C8-E7:E8. Если я знаю, как сделать один диапазон, я подумаю о том, как делать остальные.

Напомним, мне нужна помощь в создании макроса, который будет отображать комментарии, которые находятся в определенных объединенных ячейках, и должен работать, когда рабочая книга защищена, и большинство ячеек будут заблокированы. Мне нужно знать, как указать определенный объединенный диапазон и посмотреть макрос и повлиять только на то, что указывать, разблокированные ячейки.

Это персональный проект и не предназначен для школы или работы. Любая помощь будет полезной. Я благодарю вас заранее. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

картину того, что клетка выглядит так же, как кнопка:

enter image description here

ответ

1

Как насчет если вы незащитил лист перед запуском макроса и повторно защитить, если после того, как:

Sub Show_Comment() 
On Error Resume Next 
For Each ws In ActiveWorkbook.Sheets 
    ws.unprotect 
    Set allCommentRng = ws.Cells.SpecialCells(xlCellTypeComments) 
    For Each Rng In allCommentRng 
     Rng.Comment.Visible = True 
    Next Rng 
    ws.protect 
Next ws 
On Error GoTo 0 
End Sub 
+0

'ws.protect' находится внутри контура диапазона –

+0

хороший улов, спасибо @ RyszardJędraszyk –

+0

я получил его! Большое вам спасибо: D – nilajawill

2

Прежде чем пытаться манипулировать им, вы должны сначала снять защиту с рабочего места, а после внесения изменений восстановить защиту.

For Each ws In ActiveWorkbook.Sheets 
     ws.Unprotect 
     Set allCommentRng = ws.Cells.SpecialCells(xlCellTypeComments) 
     For Each Rng In allCommentRng 
      Rng.Comment.Visible = True 
     Next Rng 
     ws.Protect 
    Next ws 

Приведенный выше пример подразумевает отсутствие защиты паролем. Чтобы преодолеть защиту паролем для использования рабочих листов:

ws.Unprotect Password:="yourpasswordhere" 
ws.Protect Password:="yourpasswordhere" 
+0

Благодарим за помощь! Мне нужна книга для защиты, потому что я буду делиться ею с кем-то еще. Однако я не хочу, чтобы они могли модифицировать что-либо еще в книге. Они могут только нажать кнопку и показать комментарии. Я сделал кнопку, объединенные ячейки и комментарий разблокирован, чтобы на них не влияла защита. Но я не хочу, чтобы макрос смотрел на любой другой раздел. – nilajawill

+0

Для части пароля есть макрос, который может ввести пароль в фоновом режиме? Я попытался добавить код пароля, но мне предлагается ввести пароль, когда рабочая книга находится в защищенном режиме. Если у кого-то еще есть эта книга, у них не будет доступа к паролю. Поэтому есть ли макрос, который может вводить пароль в фоновом режиме при снятии защиты и защите рабочей книги? Еще раз спасибо за вашу помощь. – nilajawill

+0

Я понял! Большое вам спасибо: D – nilajawill

Смежные вопросы