Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2013, 01:11   #1
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию Предоставление пользователю задать значения

Имею, такой макрос http://rusfolder.com/34567895
Как можно сделать, чтобы значение предлагалось ввести пользователю, то есть мне по нажатии на кнопку в меню надстройки?
Чтобы не бегать постоянно в разработчик и там менять значения
REztor вне форума Ответить с цитированием
Старый 18.01.2013, 01:19   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Замените макрос
Код:
Sub Get_Graphics()
    Dim ChrtObj As ChartObject
    For Each ChrtObj In ActiveSheet.ChartObjects
        ChrtObj.Height = 200
        ChrtObj.Width = 300
    Next
End Sub
на следующий:
Код:
Sub Get_Graphics()
    On Error Resume Next: Err.Clear
    Dim ChrtObj As ChartObject, w&, h&
    ' запрашиваем у пользователя высоту и ширину
    w& = InputBox("Введите ширину для диаграмм", , 300): If Err Then Exit Sub
    h& = InputBox("Введите высоту для диаграмм", , 200): If Err Then Exit Sub

    Application.ScreenUpdating = False
    For Each ChrtObj In ActiveSheet.ChartObjects
        ChrtObj.Height = h&
        ChrtObj.Width = w&
    Next
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 24.01.2013, 00:56   #3
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Спасибо вам большое.
А как можно этот макрос переделать в надстройку? Что-то нежу формата Add-in для сохранения макроса как надстройку
REztor вне форума Ответить с цитированием
Старый 24.01.2013, 01:31   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А как можно этот макрос переделать в надстройку?
Можно.
Переделывайте.

Достаточно файл Excel, содержащий макросы, сохранить в формате «Надстройка Excel» (вмеcто «Книга Excel»)

Можно вашему макросу и кнопку добавить, на панели инструментов:
http://excelvba.ru/tools/CommandBar

Или назначить «горячую клавишу» через application.OnKey
EducatedFool вне форума Ответить с цитированием
Старый 25.01.2013, 00:25   #5
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

А можно использовать данный макрос в Microsoft Office Power Point?
REztor вне форума Ответить с цитированием
Старый 27.01.2013, 16:19   #6
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Можно.
Переделывайте.

Достаточно файл Excel, содержащий макросы, сохранить в формате «Надстройка Excel» (вмеcто «Книга Excel»)

Можно вашему макросу и кнопку добавить, на панели инструментов:
http://excelvba.ru/tools/CommandBar

Или назначить «горячую клавишу» через application.OnKey
Сохранил как надстройку.
Кнопку тоже сделал
Код:
Private Sub Workbook_Open()
  Dim cbrMenu As CommandBar
   Dim cbrcMenu As CommandBarControl     
   Dim cbrcSubMenu As CommandBarControl  
  
   On Error Resume Next
   Application.CommandBars("Graphics").Delete
   On Error GoTo 0

   Set cbrMenu = Application.CommandBars.Add("Graphics", msoBarLeft, False, True)
   Set cbrcMenu = cbrMenu.Controls.Add(msoControlPopup, , , , True)

   With cbrcMenu

      .Caption = "Graphics"

   End With

   With cbrcMenu.Controls.Add(Type:=msoControlButton, Temporary:=True)

    .Caption = "Изменение размера"
    '.FaceId = 2103
    .OnAction = "Get_Graphics"

   End With
       
    cbrMenu.Visible = True
End Sub
Теперь пыпаюсь сделать, чтобы макрос работал Microsoft Office Power Point и Word
REztor вне форума Ответить с цитированием
Старый 27.01.2013, 16:32   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
чтобы макрос работал Microsoft Office Power Point и Word
Для других программ, макрос надо переписывать
(для Word - будет одно, для PowerPoint - другое)

Менять надо выделенное красным:

Код:
Sub Get_Graphics()
    On Error Resume Next: Err.Clear
    Dim ChrtObj As ChartObject, w&, h&
    ' запрашиваем у пользователя высоту и ширину
    w& = InputBox("Введите ширину для диаграмм", , 300): If Err Then Exit Sub
    h& = InputBox("Введите высоту для диаграмм", , 200): If Err Then Exit Sub

    For Each ChrtObj In ActiveSheet.ChartObjects
        ChrtObj.Height = h&
        ChrtObj.Width = w&
    Next
End Sub
На что менять - не знаю
Запишете макрос макрорекордером в Word и PowerPoint - увидите
EducatedFool вне форума Ответить с цитированием
Старый 27.01.2013, 23:47   #8
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

А кнопку можно будет добавить на панель инструментов в Word и PowerPoint?
REztor вне форума Ответить с цитированием
Старый 29.01.2013, 22:13   #9
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

PowerPoint
Код:
 ChartObject - ActiveSlide
ActiveSheet.ChartObjects - ActiveSlide.Shapes
Word
Код:
ChartObject - InlineShape
ActiveSheet.ChartObjects - ActiveDocument.InlineShapes
REztor вне форума Ответить с цитированием
Старый 06.02.2013, 22:21   #10
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Код:
Sub test2()
Dim sh As Shape, ActiveSlide As Slide, w As Long, h As Long
On Error Resume Next: Err.Clear
 
Set ActiveSlide = ActiveWindow.Selection.SlideRange(1)
h = InputBox("Height", , 200): If Err Then Exit Sub
w = InputBox("Width", , 300): If Err Then Exit Sub
 
For Each sh In ActiveSlide.Shapes
    If sh.Type = msoChart Then
        sh.Height = h
        sh.Width = w
    End If
Next
End Sub
REztor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задать в Var значения элементов массива NewLamer&Programer Помощь студентам 5 15.01.2013 13:19
Задать ItemIndex-y свои значения. Detka.i.alex Помощь студентам 2 13.04.2011 14:11
Нужно правильно задать значения элементов масива Serebah Помощь студентам 4 09.02.2011 11:31
Задать значения в ComboBox gagarin0 Помощь студентам 6 23.10.2010 19:03
Залачу за предоставление возможности скачки видео. veronika10 Фриланс 2 30.07.2010 16:03