powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2010 vba Проблема с позиционированием графика
19 сообщений из 19, страница 1 из 1
Excel 2010 vba Проблема с позиционированием графика
    #38935722
hyp1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задачка довольно простая, но решить ее не получается.
Есть ряд листов-графиков, у которых отлавливается событие
Chart_Activate.

Пользователь уходя с листа мог изменить масштаб и покрутить скроллинг, хочется возвращаясь обратно на лист:

1) прокрутить скролл в 0;0, но поскольку лист имеет только график без ячеек
не работает
ActiveWindow.ScrollRow = 1
и почему-то не работает, вообще оно хоть у кого-нибудь работает?
ActiveWindow.ScrollIntoView Left:=0, Top:=0, Width:=100, Height:=100

2) и масштабировать график под размер окошка (в 2007 excel работал код, в 2010 только для чтения доступны свойства)
With Me.ChartArea
.Top = 0
.Left = 0
.Height = ActiveWindow.UsableHeight
.Width = ActiveWindow.UsableWidth
End With

У кого есть опыт/умные мысли в тему/советы поделитесь как решить проблемку
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38935836
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запишите макрорекордером возможные действия юзера по изгаживанию графика и изучите полученный код. И станет ясно, что сохранять и как восстанавливать.
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38935846
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

боюсь, скроллинг не запишется ))
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38935861
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proбоюсь, скроллинг не запишется ))Мне лень изучать, является скроллинг процессом в Экселе, процессом в объекте График, или мож ещё там чем. Человеку надо - вот пусть и пашет, изучает и разбирается.
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38935904
hyp1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не проблема, посмотрел записанные макросы.
Там где лист-график нету команд скроллинга
Там где лист с ячейками есть команды типа ActiveWindow.SmallScroll Down:=-57.

Вопрос: Можно ли на этом основании сказать, что скроллить из vba невозможно листы-графики?
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38935944
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет такого понятия как лист-график.
Вероятно, речь о листе, на коем расположен некий объект (Shape?). И скорее всего скроллинг выполняется методами этого объекта, изменяя при этом его свойства, и программно соответственно тоже нужно делать так же.
Так что сперва разберись, с чем имеешь дело, поизучай объектную модель, а потом Locals Window в руки - и вперёд, смотреть, что и как изменяется при скроллинге. Поймёшь - сделаешь то же из VBA.
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38935954
hyp1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, я извиняюсь, но реально лист-график есть, а понятия нет :) как еще называть вкладку, в которой есть только график.

Почитать объектную модель можно, но хотелось отделаться небольшими временными затратами. Например, чтобы сделать те же действия на обычном листе ушло 20 минут, примерно так

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub Worksheet_Activate()

    Dim TopRow As Long, TopCol As Long
    
    TopRow = ActiveWindow.VisibleRange.Cells.Row
    TopCol = ActiveWindow.VisibleRange.Cells.Column
    ActiveWindow.SmallScroll ToRight:=1 - TopCol
    ActiveWindow.SmallScroll Up:=TopRow - 1
    
    With Application.ActiveSheet.Shapes(1).Chart.Parent
        .Top = 0
        .Left = 0
        .Height = ActiveWindow.UsableHeight
        .Width = ActiveWindow.UsableWidth
    End With

    ActiveWindow.Zoom = 100

End Sub

Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38935971
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaНет такого понятия как лист-график.Чего-то ты сегодня жжешь )
Значешь, в чем разница, между Sheet и Worksheet? ))
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38935985
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЗначешь, в чем разница, между Sheet и Worksheet? ))ну, точнее, между коллекциями Sheets и Worksheets
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38935986
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЗнаешь, в чем разница, между Sheet и Worksheet? ))
Sheets == Worksheets + Charts
И что?
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38936000
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The Worksheet object is also a member of the Sheets collection. The Sheets collection contains all the sheets in the workbook (both chart sheets and worksheets).а ты говоришь, нет такого понятия

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

скроллбары, я считаю, не принадлежат при этом диаграмме, это видно визуально
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38936039
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да Excel скроллинг вообще не считает изменением. Скроль - не скроль, один хрен в следующий раз файл откроется строго в том же положении.
А вот, например, масштабирование - да. Считается. И в код макрорекордером - рисуется.

[quot Shocker.Pro]что скроллинг средствами объектной модели кажется мне маловероятным
Угу. Но пусть товарищ прочувствует. А потом мы ему расскажем, как сделать...

В общем, всё тривиально. Вставляем модуль, где определяем переменную. При открытии книги запоминаем в неё текущий Zoom. А при каждом Activate меняем его - сперва чуть меньше, чем был, потом ровно как был. Есссно выключив апдейт экрана. В итоге пришли-нагадили-ушли-вернулись-имеем стандартное расположение.

Если охота изменить дефолтный Zoom - придётся задать нужный и именно так сохранить файл. Ну или задать опять же в Workbook_Open.
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38936062
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автору нужно смасштабировать под размер окошка, а не под то, как было при открытии книги.

Собсно. Есть размер экрана, текущий размер диаграммы и текущий зум.
hyp1k
Код: vbnet
1.
2.
3.
4.
5.
6.
With Me.ChartArea
         .Top = 0
         .Left = 0
         .Height = ActiveWindow.UsableHeight
         .Width = ActiveWindow.UsableWidth
        End With

Раз нельзя записать размер диаграммы, что мешает вычислить и записать новый зум, имея эти данные?
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38936080
hyp1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, если я вас правильно понял, то мешает то, что ширина и высота монитора требуют зума по X и Y, зум же в экселе бывает только общий на соответствие пропорций монитора и графика никак не повлиять. Поэкспериментировав, я решил перекинуть график в воркщит и защитить лист оставив разрешение "изменение объектов", чтобы скрипт мог изменять размеры.

Почему было требование у заказчика помещать графики на спец листы?! и чего я лишаюсь переходя на воркщиты?! пока не понимаю
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38936086
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, интересно, что нельзя изменять размеры И ПРОПОРЦИИ диаграммы на спецлисте...
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38936094
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
впрочем, такой возможности я не нашел и 2003-м (то есть, видимо) была только программная возможность
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38936160
hyp1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Угу вижу масштаб по осям, ну да в 2007 аналогично 2003, вкладки нет, программно можно менять.
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38936405
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hyp1k,

Если цель вместить в область - то делается только масштабом. Поэтому можно так попробовать:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub test()
    Dim i As Long
    Application.ScreenUpdating = False
    For i = 200 To 60 Step -1
        If ChartArea.Height * ActiveWindow.Zoom / 100 <= ActiveWindow.UsableHeight Then
            Exit For
        End If
        ActiveWindow.Zoom = i
    Next i
    Application.ScreenUpdating = True
End Sub
...
Рейтинг: 0 / 0
Excel 2010 vba Проблема с позиционированием графика
    #38936923
hyp1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist, да только пропорции экрана графиком не соблюдаются, ну и бы писал так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Chart_Activate()
    Dim minZoom As Long
    Dim addZoom As Long
    minZoom = ActiveWindow.UsableHeight * 100 / ChartArea.Height
    addZoom = ActiveWindow.UsableWidth * 100 / ChartArea.Width
    If (addZoom < minZoom) Then
        minZoom = addZoom
    End If
    ActiveWindow.Zoom = minZoom
End Sub
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2010 vba Проблема с позиционированием графика
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]