Страницы: 1
RSS
Макрос оформления автофигуры криво работает в Excel 2007
 
Всем привет.  
 
Очень давно пользуюсь надстройкой для создания кнопок запуска макроса на листе Excel:  
http://excelvba.ru/code/Buttons  
 
И сколько я ей пользуюсь - столько и мучаюсь, ибо если в Excel 2003 функция рисует нормальную кнопку (как на скриншоте в статье), то в Excel 2007 на выходе получается безобразие (толстая рамка вокруг кнопки, цвет текста белый, и т.п.)  
 
Почему так происходит - понимаю, - Microsoft в 2007-й версии Excel что-то там наизменяла в плане стиля автофигур (что именно - до сих пор толком не разобрался)  
 
Пытался сам модернизировать код - добавляя всякие TintAndShade - но результата не добился (чтобы в 2007-м кнопки выглядели также, как в 2003-м)  
 
Может, кто подскажет, как изменить код?  
(макрорекордер в 2007-м ничего не пишет. Может, обладателям 2010-го, к коим я пока не отношусь, повезло больше?)
 
Ну толщину линии можно изменить так:  
   With Selection.ShapeRange.Line  
       .Visible = msoTrue  
       .Weight = 0.25  
   End With  
а уж какие образцы заливки нужны...  
Короче, вот что выдал рекордер 2010:  
Sub Макрос2()  
   ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 240, 75, 46.5, 14.25). _  
       Select  
   With Selection.ShapeRange.Fill  
       .Visible = msoTrue  
       .ForeColor.ObjectThemeColor = msoThemeColorAccent1  
       .ForeColor.TintAndShade = 0.3399999738  
       .ForeColor.Brightness = 0  
       .BackColor.ObjectThemeColor = msoThemeColorAccent1  
       .BackColor.TintAndShade = 0.7649999857  
       .BackColor.Brightness = 0  
       .TwoColorGradient msoGradientHorizontal, 1  
   End With  
   Selection.ShapeRange.Fill.Visible = msoTrue  
   Selection.ShapeRange.Line.Visible = msoTrue  
   With Selection.ShapeRange.Line  
       .Visible = msoTrue  
       .Weight = 0.25  
   End With  
   With Selection.ShapeRange.Fill  
       .Visible = msoTrue  
       .PresetGradient msoGradientHorizontal, 1, msoGradientOcean  
   End With  
   Range("F7").Select  
End Sub
Я сам - дурнее всякого примера! ...
 
{quote}{login=EducatedFool}{date=18.08.2011 10:47}{thema=Макрос оформления автофигуры криво работает в Excel 2007}{post}Всем привет.  
 
Очень давно пользуюсь надстройкой для создания кнопок запуска макроса на листе Excel:  
http://excelvba.ru/code/Buttons  
 
И сколько я ей пользуюсь - столько и мучаюсь, ибо если в Excel 2003 функция рисует нормальную кнопку (как на скриншоте в статье), то в Excel 2007 на выходе получается безобразие (толстая рамка вокруг кнопки, цвет текста белый, и т.п.)  
 
Почему так происходит - понимаю, - Microsoft в 2007-й версии Excel что-то там наизменяла в плане стиля автофигур (что именно - до сих пор толком не разобрался)  
 
Пытался сам модернизировать код - добавляя всякие TintAndShade - но результата не добился (чтобы в 2007-м кнопки выглядели также, как в 2003-м)  
 
Может, кто подскажет, как изменить код?  
(макрорекордер в 2007-м ничего не пишет. Может, обладателям 2010-го, к коим я пока не отношусь, повезло больше?){/post}{/quote}  
 
 
примерно твоя кнопка (по памяти только надпись "eeeee") записанная рекордером 2010  
 
Sub Макрос1()  
 
   ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 238.5, 45.75, 72, 72). _  
       Select  
   Selection.ShapeRange.ScaleHeight 0.3958333333, msoFalse, msoScaleFromTopLeft  
   Selection.ShapeRange.ScaleWidth 1.25, msoFalse, msoScaleFromTopLeft  
   Selection.ShapeRange.ShapeStyle = msoShapeStylePreset25  
   Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "ееее"  
   With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 4). _  
       ParagraphFormat  
       .FirstLineIndent = 0  
       .Alignment = msoAlignLeft  
   End With  
   With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 4).Font  
       .NameComplexScript = "+mn-cs"  
       .NameFarEast = "+mn-ea"  
       .Fill.Visible = msoTrue  
       .Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1  
       .Fill.ForeColor.TintAndShade = 0  
       .Fill.ForeColor.Brightness = 0  
       .Fill.Transparency = 0  
       .Fill.Solid  
       .Size = 11  
       .Name = "+mn-lt"  
   End With  
   Range("H5").Select  
End Sub  
 
2007 нету проверить :(
Спасибо
 
Спасибо всем.  
Оказывается, дело было не в новшествах Excel 2007 - я просто не знал про существование свойства Line объекта Shape.  
 
Достаточно было добавить в код всего 3 строки - а я 2 года правил эти кнопки вручную...  
 
.Line.Weight = 0.25  
.Line.ForeColor.RGB = vbBlack  
.Characters.Font.Color = vbBlack
Страницы: 1
Наверх