Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Установка размера примечания - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Установка размера примечания (Макросы/Sub)
Установка размера примечания
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]"Иной раз" - это когда? Пример приложите с этим разом.

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

[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 в 18:34
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
 
Ответить
Сообщение[moder]11Кладите файл сюда.
И прочитайте уже Правила форума[/moder]
[moder]Для танкистов - нужен файл в Excel

Автор - GTRR34
Дата добавления - 09.10.2014 в 22:27
The_Prist Дата: Четверг, 09.10.2014, 23:31 | Сообщение № 3
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

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


Errare humanum est, stultum est in errore perseverare
 
Ответить
СообщениеВообще надо определиться: либо сами устанавливаем размеры, либо AutoSize(т.е. автоподгон размера примечания под текст в нем)

Автор - The_Prist
Дата добавления - 09.10.2014 в 23:31
Alex_ST Дата: Пятница, 10.10.2014, 12:41 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

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



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


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

Автор - Alex_ST
Дата добавления - 10.10.2014 в 12:41
The_Prist Дата: Пятница, 10.10.2014, 18:54 | Сообщение № 5
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

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


Errare humanum est, stultum est in errore perseverare
 
Ответить
СообщениеАлексей, думаю в процитированной строке просто затерлось равенство(=).

Автор - The_Prist
Дата добавления - 10.10.2014 в 18:54
Alex_ST Дата: Пятница, 10.10.2014, 19:17 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

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



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
думаю в процитированной строке просто затерлось равенство
Дмитрий, ну я ещё понял бы, если бы при копипасте не "прихватились" бы символы в начале или в конце фрагмента. Это обычное понятное дело - мышка дрогнула. Но чтобы символ случайно выпал из середины фрагмента кода??? Не верю!!!

Автор - Alex_ST
Дата добавления - 10.10.2014 в 19:17
The_Prist Дата: Пятница, 10.10.2014, 19:43 | Сообщение № 7
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

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


Errare humanum est, stultum est in errore perseverare
 
Ответить
СообщениеАлексей, зря не верите. Я специально сейчас во второй пост автора глянул - там скрин кода. Не равно, но...Знак больше - >

Автор - The_Prist
Дата добавления - 10.10.2014 в 19:43
Alex_ST Дата: Пятница, 10.10.2014, 20:59 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

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



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


Сообщение отредактировал Alex_ST - Пятница, 10.10.2014, 21:00
 
Ответить
СообщениеНу, тогда, наверное, к Сержу вопрос: почему движок форума сглотнул знак "больше"?
Хотя... сейчас попробуем:
- просто в тексте: >
- в тэгах [vba]
Код
Sub
>
End
[/vba]
-----------------------------------
Вроде бы всё ОК

Автор - Alex_ST
Дата добавления - 10.10.2014 в 20:59
Alex_ST Дата: Пятница, 10.10.2014, 22:53 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 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
 
Ответить
СообщениеСначала решил, что это может быть из-за того, что 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
Стоило в текст ввести пару абзацев, как после работы макроса снизу вылезло пустое поле.

Автор - Alex_ST
Дата добавления - 10.10.2014 в 22:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Установка размера примечания (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!