Размер примечания vba excel

 

Leanna

Пользователь

Сообщений: 816
Регистрация: 15.01.2013

Подскажите пожалуйста как в VBA изменить размеры желтого блока примечания в ячейке A13  
и сделать его например ScaleWidth 8 и  ScaleHeight  8  
текст слишком большой, весь в блок не вмещается, а макрорекордер выдает ошибку.

Работать надо не 12 часов, а головой.

 
 

Leanna

Пользователь

Сообщений: 816
Регистрация: 15.01.2013

спаисбо слэн,  
Только мне нужно немного другое типа, не обновление,  
мне нужно будет в код вставить  в обработку ячеек и присвоение им примечаний.  

  Данный код .Shape.Height = h и .Shape.Width = w не работает надо что-то работающее код на примечание должен будет примерно выглядеть след образом.  

  With Range(«a11»).AddComment  
   .Visible = False  
   .Text «большой текст»  
   .Shape.Width = w  
   .Shape.Height = h  
End With  
где w ширина, h — высота

Работать надо не 12 часов, а головой.

 

ну и дерзайте..  

  а что там не работает я  так и не понял.  

  а если поискать, то и раньше здесь такие вопросы обсуждались

 

Leanna

Пользователь

Сообщений: 816
Регистрация: 15.01.2013

действительно заработало…  
за идею с .Shape.Width тебе слэн спасибо.

Работать надо не 12 часов, а головой.

 

Изменение размера области примечания  
Макрос CommentFitter1 любезно предоставлен Томом Уртисом.  
Следующий макрос изменяет размер области примечания так, чтобы она  
вместила в себя весь текст примечания.  

  Sub CommentFitter1()  
Application.ScreenUpdating = False  
Dim x As Range, y As Long  
For Each x In Cells.SpecialCells(xlCellTypeComments)  
Select Case True  
Case Len(x.NoteText) <> 0  
With x.Comment  
.Shape.TextFrame.AutoSize = True  
If .Shape.Width > 250 Then  
y = .Shape.Width * .Shape.Height  
.Shape.Width = 150  
.Shape.Height = (y / 200) * 1.2  
End If  
End With  
End Select  
Next x  
Application.ScreenUpdating = True  
End Sub

 

Leanna

Пользователь

Сообщений: 816
Регистрация: 15.01.2013

Спасибо, этот вариант ещё интереснее !

Работать надо не 12 часов, а головой.

 

olly

Пользователь

Сообщений: 6
Регистрация: 01.01.1970

Подскажите пожалуйста как в VBA изменить размер примечания с картинкой на «х» процентов.  
В прикрепленном файле на первом листе исходный вид документа, а на втором то что должно получиться.  
в программировании я «0», а файлов таких у меня 40 и в каждом от 20 до 50 строк.  
Буду Вам очень признателен!

 

Somebody

Пользователь

Сообщений: 169
Регистрация: 01.01.1970

olly, см. приложенный файл. Нажмите кнопку «Макрос» на листе «Начальный» <BR><STRONG>Файл удален</STRONG> — велик размер. [Модераторы]

 

olly

Пользователь

Сообщений: 6
Регистрация: 01.01.1970

Sombody, модераторы удалили файл!!!!!  
Скинь мне пожалуйста на мыло dubovyk_o@mail.ru  
Спасибо за помощь!!!!

 

Somebody

Пользователь

Сообщений: 169
Регистрация: 01.01.1970

 

Somebody

Пользователь

Сообщений: 169
Регистрация: 01.01.1970

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

  Sub CorrectComments()  
Dim iLastRow As Long, iRow As Long, iComment As Comment  

     If MsgBox(«Выравнить фото по столбцу D?», vbQuestion + vbYesNo, «Выравнивание фото») = vbNo Then Exit Sub  
   iLastRow = Cells(Rows.Count, «C»).End(xlUp).Row  
   Range(«D1»).EntireColumn.Insert  
   Columns(«D:D»).ColumnWidth = 30  
   For iRow = 5 To iLastRow  
       Set iComment = Cells(iRow, «C»).Comment  
       If Not iComment Is Nothing Then  
           Rows(iRow).RowHeight = 110  
           iComment.Visible = True  
           iComment.Shape.Left = Columns(«D»).Left  
           iComment.Shape.Top = Cells(iRow, «D»).Top  
           iComment.Shape.Height = Rows(iRow).Height ‘высота примечания  
           iComment.Shape.Width = Columns(«D»).Width ‘ширина примечания  
       End If  
   Next iRow  
   Range(«D4») = «Фото»  
   MsgBox «Фотографии выравнены!», 64, «Конец»  
End Sub

 

olly

Пользователь

Сообщений: 6
Регистрация: 01.01.1970

СПАСИБО, Sombody!  
Все работает!  
Не знаю как Вас благодарить!  
Если есть webmony могу скинуть пару $.

 

Somebody

Пользователь

Сообщений: 169
Регистрация: 01.01.1970

Спасибо. Это не настолько сложный макрос, чтобы я брал за него плату)

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

{quote}{login=Somebody}{date=25.04.2010 11:51}{thema=}{post}Спасибо. Это не настолько сложный макрос, чтобы я брал за него плату){/post}{/quote}А какая разница? Если человек хочет отблагодарить — пусть платит. Это для Вас несложно, а другому — выше крыши.  

  ИМХО.

 

Somebody

Пользователь

Сообщений: 169
Регистрация: 01.01.1970

Сергей, у меня просто нет WebMoney, ЯндексДеньги и других кошельков) Я наличность люблю )  
поэтому я просто так отмазался) не поеду же я встречаться с девушкой ради пары $$$ )

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

{quote}{login=Somebody}{date=25.04.2010 12:00}{thema=}{post}Сергей, у меня просто нет WebMoney, ЯндексДеньги и других кошельков) Я наличность люблю )  
поэтому я просто так отмазался) не поеду же я встречаться с девушкой ради пары $$$ ){/post}{/quote}Дело Ваше ;-)))  
Можно и поехать :-) Если нет другой девушки :)

 

Somebody

Пользователь

Сообщений: 169
Регистрация: 01.01.1970

по моему опыту, на девушку уходит огромное (для меня) количество денег):  
цветы, кино, кафе (рестораны), подарки и т.д.    
В связи с этим я предполагаю, что я получу от Оли 2 доллара, а вложу 1000, мне как-то страшен такой обмен ))))))  

  P.S. Оля не принимайте это на свой счёт ) мы шутим )  

  P.P.S. Хорошо, что я пишу всё это под ником Somebody, а не под тем, под которым меня на этом форуме ОЧЕНЬ хорошо знают ))))

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

{quote}{login=Somebody}{date=25.04.2010 12:11}{thema=}{post}  
P.P.S. Хорошо, что я пишу всё это под ником Somebody, а не под тем, под которым меня на этом форуме ОЧЕНЬ хорошо знают )))){/post}{/quote}Можно в личку? Обещаю — могила.  
Просто очень интересно.

 

Somebody

Пользователь

Сообщений: 169
Регистрация: 01.01.1970

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

{quote}{login=Somebody}{date=25.04.2010 12:24}{thema=}{post}Написал вам на почту )){/post}{/quote}Ок :-)

 

olly

Пользователь

Сообщений: 6
Регистрация: 01.01.1970

Хочу Вас расстроить:  
1. Я не девочка я мальчик  
2. Olly — меня так называли в Англии (Ирландское муж. имя)  
Вот я и взял его как ник.

 

Somebody

Пользователь

Сообщений: 169
Регистрация: 01.01.1970

olly )))) 5 баллов )))  

  Я вчера ещё помнил, что вы парень, вы написали в конце вашей просьбы «Буду Вам очень признателен!», а сегодня с утра я уже забыл про это и смотря на ваш ник, подумал, что девушка ))))  Прошу прощения )))

 

olly

Пользователь

Сообщений: 6
Регистрация: 01.01.1970

Summer!    
Вылез нюанс, в файлах попадаються фото книжного формата.  
Макрос растягивает его до альбомного.  
Можно ли изменять размер примечания пропорционально в %.

 

Somebody

Пользователь

Сообщений: 169
Регистрация: 01.01.1970

Олег,    
Как изменять в % соотношении я не знаю. И не знаю, как это сработает, т.к. одни фото маленькие, другие большие, т.е. одну надо уменьшить на 10%, а другую на 50%  

  Попробуйте этот код  

  Sub CorrectComments()  
   Dim iLastRow As Long, iRow As Long, iComment As Comment  

     If MsgBox(«Выравнить фото по столбцу D?», vbQuestion + vbYesNo, «Выравнивание фото») = vbNo Then Exit Sub  
   iLastRow = Cells(Rows.Count, «C»).End(xlUp).Row  
   Range(«D1»).EntireColumn.Insert  
   Columns(«D:D»).ColumnWidth = 20 ‘ширина столбца  
   Application.ScreenUpdating = False  
   For iRow = 5 To iLastRow  
       Set iComment = Cells(iRow, «C»).Comment  
       If Not iComment Is Nothing Then  
           Rows(iRow).RowHeight = 140 ‘высота строк  
           iComment.Visible = True  
           iComment.Shape.Left = Columns(«D»).Left  
           iComment.Shape.Top = Cells(iRow, «D»).Top  
           iComment.Shape.Height = Rows(iRow).Height    ‘высота примечания  
           iComment.Shape.Width = Columns(«D»).Width    ‘ширина примечания  
       End If  
   Next iRow  
   Range(«D3») = «Фото»  
   Application.ScreenUpdating = True  
   MsgBox «Фотографии выравнены!», 64, «Конец»  
End Sub  

  В коде есть комментарии «Ширина столбца» и «Высота строк», меняя эти значения можно подобрать оптимальные размеры. Попробуйте поиграться с этими цифрами

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Может так надо?  
Вместо 5.25 может чуть другую цифру можно поставить.  

  Option Explicit  

  Sub CorrectComments()  
Dim iLastRow As Long, iRow As Long, iComment As Comment  
Dim temp As Single, tempwidhth As Single  

  If MsgBox(«Выравнить фото по столбцу D?», vbQuestion + vbYesNo, «Выравнивание фото») = vbNo Then Exit Sub  
iLastRow = Cells(Rows.Count, «C»).End(xlUp).Row  
Range(«D1»).EntireColumn.Insert  
Columns(«D:D»).ColumnWidth = 30  
For iRow = 5 To iLastRow  
Set iComment = Cells(iRow, «C»).Comment  
If Not iComment Is Nothing Then  
Rows(iRow).RowHeight = 110  
iComment.Visible = True  
iComment.Shape.Left = Columns(«D»).Left  
iComment.Shape.Top = Cells(iRow, «D»).Top  
temp = iComment.Shape.Width / iComment.Shape.Height  
iComment.Shape.Height = Rows(iRow).Height ‘высота примечания  
iComment.Shape.Width = Rows(iRow).Height * temp ‘ширина примечания  
If iComment.Shape.Width > tempwidhth Then tempwidhth = iComment.Shape.Width  
End If  
Next iRow  
Columns(«D:D»).ColumnWidth = tempwidhth / 5.25  

  Range(«D4») = «Фото»  
MsgBox «Фотографии выравнены!», 64, «Конец»  
End Sub

 

Сер

Гость

#27

07.06.2011 18:44:51

{quote}{login=Велосипед}{date=23.05.2008 07:57}{thema=Как изменить размеры примечания програмно?}{post}Изменение размера области примечания  
.Comment.Shape.TextFrame.AutoSize = True  
{/post}{/quote}  
Велосипед, спасибо! То, что надо!

Установка размера примечания

GTRR34

Дата: Четверг, 09.10.2014, 18:34 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

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

[vba]

Код

Sub FitComments()
      Dim xComment As Comment
      For Each xComment In Application.ActiveSheet.Comments
       With xComment.Shape
       .TextFrame.AutoSize = True
       wLimit = 300
       If .Width wLimit Then
       lArea = .Width * .Height
       .Width = wLimit
       .Height = (lArea / wLimit) * 1.05
       End If
       End With
      Next
      End Sub

[/vba]
[moder]»Иной раз» — это когда? Пример приложите с этим разом.

Кстати, Вы уверены, что этот код рабочий и что Вы при вставке его сюда ничего не потеряли?

 

Ответить

GTRR34

Дата: Четверг, 09.10.2014, 22:27 |
Сообщение № 2

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

[moder]11Кладите файл сюда.
И прочитайте уже Правила форума[/moder]
[moder]Для танкистов — нужен файл в Excel

К сообщению приложен файл:

2386111.jpg
(58.9 Kb)

Сообщение отредактировал GTRR34Четверг, 09.10.2014, 22:50

 

Ответить

The_Prist

Дата: Четверг, 09.10.2014, 23:31 |
Сообщение № 3

Группа: Друзья

Ранг: Участник

Сообщений: 84


Репутация:

22

±

Замечаний:
0% ±


2010

Вообще надо определиться: либо сами устанавливаем размеры, либо AutoSize(т.е. автоподгон размера примечания под текст в нем)


Errare humanum est, stultum est in errore perseverare

 

Ответить

Alex_ST

Дата: Пятница, 10.10.2014, 12:41 |
Сообщение № 4

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

А на это:не ругается?
Ну и AutoSize = True , естественно, лишнее. Посмотрел внимательнее на код. Нет. Не лишнее, похоже.
Да и wLimit = 300 из цикла лучше вынести.
А всё остальное, кажется, должно работать. (Не проверял.Сейчас некогда)



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STПятница, 10.10.2014, 21:47

 

Ответить

The_Prist

Дата: Пятница, 10.10.2014, 18:54 |
Сообщение № 5

Группа: Друзья

Ранг: Участник

Сообщений: 84


Репутация:

22

±

Замечаний:
0% ±


2010

Алексей, думаю в процитированной строке просто затерлось равенство(=).


Errare humanum est, stultum est in errore perseverare

 

Ответить

Alex_ST

Дата: Пятница, 10.10.2014, 19:17 |
Сообщение № 6

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

думаю в процитированной строке просто затерлось равенство

Дмитрий, ну я ещё понял бы, если бы при копипасте не «прихватились» бы символы в начале или в конце фрагмента. Это обычное понятное дело — мышка дрогнула. Но чтобы символ случайно выпал из середины фрагмента кода??? Не верю!!!



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

The_Prist

Дата: Пятница, 10.10.2014, 19:43 |
Сообщение № 7

Группа: Друзья

Ранг: Участник

Сообщений: 84


Репутация:

22

±

Замечаний:
0% ±


2010

Алексей, зря не верите. Я специально сейчас во второй пост автора глянул — там скрин кода. Не равно, но…Знак больше — >


Errare humanum est, stultum est in errore perseverare

 

Ответить

Alex_ST

Дата: Пятница, 10.10.2014, 20:59 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Ну, тогда, наверное, к Сержу вопрос: почему движок форума сглотнул знак «больше»?
Хотя… сейчас попробуем:
— просто в тексте: >
— в тэгах [vba][/vba]
————————————
Вроде бы всё ОК



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STПятница, 10.10.2014, 21:00

 

Ответить

Alex_ST

Дата: Пятница, 10.10.2014, 22:53 |
Сообщение № 9

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Сначала решил, что это может быть из-за того, что GTRR34 не использует декларацию Option Explicit, поэтому не названные переменные могут где-то в другом месте назначены Public Const
Попробовал у себя в новой книге с Option Explicit и объявлением переменных. [vba]

Код

Sub FitComments()
      Dim xComment As Comment, lArea!, wLimit%
      wLimit = 300
      For Each xComment In Application.ActiveSheet.Comments
          With xComment.Shape
              .TextFrame.AutoSize = True
              If .Width > wLimit Then
                  lArea = .Width * .Height
                  .Width = wLimit
                  .Height = (lArea / wLimit) * 1.05
              End If
          End With
      Next
End Sub

[/vba]Действительно, похоже, что иногда снизу в примечании появляется большой пустой кусок.
Это легко проверяется изменением значения wLimit = 300
Есть подозрение, что пустое поле снизу появляется при ширине примечания, меньшем длины строки абзаца (от начала строки до CR).
Т.е. не уместившиеся и перенесённые из-за принудительного обрезания строки Энтеры вызывают соответствующее излишнее увеличение высоты.
Чем больше в тексте примечания абзацев, тем больше может вылезти лишней высоты при поджимании абзацев шириной поля примечания.
Сплошной фрагмент текста без концов абзаца у меня вписывался нормально при любых значениях wLimit
Стоило в текст ввести пару абзацев, как после работы макроса снизу вылезло пустое поле.



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STПятница, 10.10.2014, 22:54

 

Ответить

trvi

27 / 2 / 0

Регистрация: 20.02.2013

Сообщений: 126

1

Изменение размера примечаний

27.02.2013, 10:57. Показов 7156. Ответов 9

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Создал код который изменяет размер примечания во всех ячейках в диапозоне:

Visual Basic
1
2
3
4
5
6
Sub kl()
With ActiveWorkbook.Worksheets("Лист1").Range("A1:Q100").Comment
    .Shape.Width = 84.75
    .Shape.Height = 57#
End With
End Sub

Не работает… Где может быть ошибка?

Как прикрутить позиционирование примечания относительно её ячейки?

Visual Basic
1
2
.Selection.ShapeRange.IncrementLeft 81.75
.Selection.ShapeRange.IncrementTop 113.25



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

27.02.2013, 10:57

9

Апострофф

Заблокирован

27.02.2013, 11:26

2

Visual Basic
1
2
3
4
5
6
Sub kl()
Dim c As Range
For Each c In ActiveWorkbook.Worksheets("Ëèñò1").Range("A1:Q100")
  c.Comment.Shape.Width = 84.75
  c.Comment.Shape.Height = 57#
Next c



0



Catstail

Модератор

Эксперт функциональных языков программированияЭксперт Python

34709 / 19230 / 4040

Регистрация: 12.02.2012

Сообщений: 32,197

Записей в блоге: 13

27.02.2013, 11:31

3

Я бы добавил еще пару строк:

Visual Basic
1
2
3
4
5
6
7
8
9
Sub kl()
Dim c As Range
For Each c In ActiveWorkbook.Worksheets("Лист1").Range("A1:B2")
  If Not (c.Comment Is Nothing) Then '::: у ячейки есть примечание
     c.Comment.Shape.Width = 84.75
     c.Comment.Shape.Height = 57#
  End If
Next c
End Sub



1



5468 / 1148 / 50

Регистрация: 15.09.2012

Сообщений: 3,514

27.02.2013, 12:14

4

А вот символ # после числа — это в каком разделе VBA-справки посмотреть?



0



Апострофф

Заблокирован

27.02.2013, 12:27

5

Цитата
Сообщение от Скрипт
Посмотреть сообщение

А вот символ # после числа — это в каком разделе VBA-справки посмотреть?

Excel 2010 Developer Reference > Visual Basic for Applications Language Reference > Visual Basic Definitions >
VBE Glossary



0



5468 / 1148 / 50

Регистрация: 15.09.2012

Сообщений: 3,514

27.02.2013, 12:46

6

Апострофф, одно из назначений символа # — это придание переменной нужного типа данных. Об этом есть информация в VBA-справочниках.
А вот о придании типа данных числам — я не знаю, в каком разделе VBA-справочника посмотреть.

Сейчас читаю VBA-справочник. Пока прихожу к выводу, что числа, указываемые в коде, являются константами. Видимо нужно читать раздел VBA-справочника про константы.



0



27 / 2 / 0

Регистрация: 20.02.2013

Сообщений: 126

27.02.2013, 12:53

 [ТС]

7

Спасибо!



0



trvi

27 / 2 / 0

Регистрация: 20.02.2013

Сообщений: 126

06.03.2013, 09:16

 [ТС]

8

Не получается сделать так, чтобы положение комментария относительно ячеки было одно:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub kl()
    Dim c As Range
    For Each c In ActiveWorkbook.Worksheets("Ëèñò1").Range("A1:Z100")
        If Not (c.Comment Is Nothing) Then ' ó ÿ÷åéêè åñòü ïðèìå÷àíèå
            c.Comment.Shape.Width = 84.75 ' øèðèíà êîììåíòàðèÿ
            c.Comment.Shape.Height = 57#   ' âûñîòà êîììåíòàðèÿ
            
            c.ShapeRange.IncrementLeft -117#
            c.ShapeRange.IncrementTop 73.5
        End If
    Next c
End Sub



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

06.03.2013, 09:55

9

Инкременты замените на

Visual Basic
1
2
            c.Comment.Shape.Top = c.Top + 10
            c.Comment.Shape.Left = c.Offset(, 1).Left + 20



1



27 / 2 / 0

Регистрация: 20.02.2013

Сообщений: 126

06.03.2013, 11:38

 [ТС]

10

Казанский,

Как всегда!



0



Когда вы вставляете комментарии в ячейки, размер поля комментариев устанавливается по умолчанию. Если вы введете в него много содержимого, часть содержимого не будет видна напрямую. Можно ли автоматически подогнать размер поля комментария к его содержимому?

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


Автоматическое изменение размера окна комментария по размеру его содержимого на листе

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

1. Удерживайте ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модули, и вставьте следующий макрос в Окно модуля.

Код VBA: автоматическое изменение размера полей комментариев на листе

Sub FitComments()
'Updateby20140325
Dim xComment As Comment
For Each xComment In Application.ActiveSheet.Comments
    xComment.Shape.TextFrame.AutoSize = True
Next
End Sub

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

автоматический размер документа комментарий 1

Функции: Этот код работает только на текущем листе, и он не может автоматически изменять размер новых полей комментариев, которые вы добавляете.



Автоматическое изменение размера окна комментария для размещения его содержимого в диапазоне ячеек

Если вам просто нужно автоматически изменить размер диапазона полей комментариев к ячейкам, вы можете использовать следующий код VBA.

1. Удерживайте ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модули, и вставьте следующий макрос в Окно модуля.

Код VBA: автоматическое изменение размера полей комментариев в диапазоне ячеек

Sub Fitrangecomments()
'Updateby20140325
Dim rng As Range
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each rng In WorkRng
    If Not rng.Comment Is Nothing Then
        rng.Comment.Shape.TextFrame.AutoSize = True
    End If
Next
End Sub

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

doc-resize-comment-box3

4. Затем щелкните OK, поля комментариев выбранных вами ячеек были автоматически подогнаны под содержание комментария.

Функции: Этот код не может автоматически изменять размер новых полей комментариев, которые вы добавляете.


Автоматическое изменение размера окна комментариев в соответствии с его содержимым на активном листе или на всем листе 

Вы можете попробовать Комментарий AutoFit полезности Kutools for Excel для автоматического изменения размераЗаполните поля комментариев на активном листе или на всех листах в Excel. Пожалуйста, сделайте следующее.

1. Для автоматического изменения размера полей комментариев в соответствии с их содержимым на активном листе щелкните Кутулс > Больше > Комментарий AutoFit > Активный лист.

И если вы хотите автоматически изменить размер всех полей комментариев во всей книге, нажмите Кутулс > Больше > Комментарий AutoFit > Все листы. Смотрите скриншот:

Затем размер всех полей комментариев автоматически изменяется в соответствии с их содержимым. Смотрите скриншот:

Заметки:

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

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Поле для комментариев автоматически изменяет размер в соответствии с его содержимым


Статьи по теме:

  • Как изменить форму поля комментариев в Excel?
  • Как изменить все форматы комментариев в ячейках в Excel?
  • Как перечислить все комментарии к новому листу или книге в Excel?
  • Как вставить картинку или изображение в комментарий в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

When one adds a cell comment in Excel (2016), the comment box is notoriously suboptimally-sized and needs manual adjustment. I defined this macro (with VBA code that I got from here) to automatically resize the cell comment that appears when the mouse is hovered above a cell:

Sub FitComments()
Dim xComment As Comment
For Each xComment In Application.ActiveSheet.Comments
    xComment.Shape.TextFrame.AutoSize = True
Next
End Sub

However, I would like this macro to instead:

  1. resize the comment box not just on one line but across multiple
    lines, optimising the rectangle’s aspect ratio (the way Google
    Spreadhseets automatically resizes any cell comment box, the second
    it is created)
  2. act not upon all cell comments in the sheet but only
    upon the current cell’s comment

I have however no real knowledge of VBA. Can anyone point out what changes I’d have to make to the code? Thanks!

asked Feb 5, 2019 at 17:04

z8080's user avatar

1

Sub FitComments()
Dim Rng As Range
Dim Cell As Range
Set Rng = Selection
For Each Cell In Rng
    If Not Cell.Comment Is Nothing Then
    Cell.Comment.Shape.TextFrame.AutoSize = True
    End If
Next
End Sub

Excel 2016 is not available at my current location to test the above or I would have done so before posting. I am running Office 365 which automatically does the resizing as you describe. Multiple versions were tested until the macro did not error.

The concept behind this code is to apply autosize to the comments within the selection on a per cell basis.

I applied the macro to a Control + (letter of choice) keyboard activation for quick access.

Stepping into the code on a line by line basis, it ran through the expected number of steps for the test selection.

answered Feb 5, 2019 at 20:22

Jason Cameron's user avatar

2

Sub Resize_All_Comments()

Dim xComment As Comment
Dim KHeight As Long
Dim KWidth As Long

On Error Resume Next

KHeight = Application.InputBox("Add text", "Height", "500", Type:=2)
KWidth = Application.InputBox("Add text", "Width", "500", Type:=2)

For Each xComment In Application.Select.Comment
    xComment.Shape.Width = KWidth
    xComment.Shape.Height = KHeight

Next
MsgBox "Done"
End Sub

using this you can resize according to you requirements, note it will resize all the comments in the current sheet.

Hope it helps someone

answered Mar 19, 2019 at 7:56

Directionsky's user avatar

1

Понравилась статья? Поделить с друзьями:
  • Размер одного пункта в word
  • Размер поля в word 2007
  • Размер одного пикселя в excel
  • Размер полей для word
  • Размер области печати excel