Добрый день, необходимо сделать размер окошка для комментариев(примечаний) определенного размера. Код приведенный ниже в целом работает, но иной раз по необъяснимой причине высота комментариев существенно больше чем текст.
[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
не ругается? Ну и AutoSize = True , естественно, лишнее. Посмотрел внимательнее на код. Нет. Не лишнее, похоже. Да и wLimit = 300 из цикла лучше вынести. А всё остальное, кажется, должно работать. (Не проверял.Сейчас некогда)
не ругается? Ну и AutoSize = True , естественно, лишнее. Посмотрел внимательнее на код. Нет. Не лишнее, похоже. Да и wLimit = 300 из цикла лучше вынести. А всё остальное, кажется, должно работать. (Не проверял.Сейчас некогда)Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Пятница, 10.10.2014, 21:47
думаю в процитированной строке просто затерлось равенство
Дмитрий, ну я ещё понял бы, если бы при копипасте не "прихватились" бы символы в начале или в конце фрагмента. Это обычное понятное дело - мышка дрогнула. Но чтобы символ случайно выпал из середины фрагмента кода??? Не верю!!!
думаю в процитированной строке просто затерлось равенство
Дмитрий, ну я ещё понял бы, если бы при копипасте не "прихватились" бы символы в начале или в конце фрагмента. Это обычное понятное дело - мышка дрогнула. Но чтобы символ случайно выпал из середины фрагмента кода??? Не верю!!!Alex_ST
Сначала решил, что это может быть из-за того, что 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 Стоило в текст ввести пару абзацев, как после работы макроса снизу вылезло пустое поле.
Сначала решил, что это может быть из-за того, что 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
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Пятница, 10.10.2014, 22:54