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

Вход

Регистрация

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

 

= Мир MS Excel/VBA внешний массив внутри пузырьковой диаграммы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
VBA внешний массив внутри пузырьковой диаграммы
kotlovan Дата: Среда, 15.01.2020, 15:28 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Приветствую!
1. Пытался сделать, но не вышло: цвет пузырька красный, если значение по столбцу AL <0.
Ничего не вышло.
2. Сейчас макрос работает так - цвет пузырька красный если его значение > 0. (значения берутся автоматом из столбца AI).
Кто сможешь помочь реализовать пункт 1.?
файл прилагаю

[vba]
Код

Sub проверка()
'Диаграмма "коко"
    
    Set iChart = ActiveSheet.ChartObjects("коко").Chart
    Set iSerie = iChart.SeriesCollection(1) 'первый ряд диаграммы
    
    iSerie.HasDataLabels = True
    iSerie.HasDataLabels = True
    
    
    iValues = iSerie.Values
    iMax16# = Application.Large(iValues, Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16))(16)
    For iCount& = 1 To UBound(iValues)
        If iValues(iCount&) > 0 Then
           Set IPoint = iSerie.Points(iCount&)
             IPoint.Format.Fill.ForeColor.RGB = RGB(250, 209, 209)

        End If
    Next
    
End Sub
[/vba]
К сообщению приложен файл: test.xlsm (52.4 Kb)


Сообщение отредактировал kotlovan - Среда, 15.01.2020, 15:29
 
Ответить
СообщениеПриветствую!
1. Пытался сделать, но не вышло: цвет пузырька красный, если значение по столбцу AL <0.
Ничего не вышло.
2. Сейчас макрос работает так - цвет пузырька красный если его значение > 0. (значения берутся автоматом из столбца AI).
Кто сможешь помочь реализовать пункт 1.?
файл прилагаю

[vba]
Код

Sub проверка()
'Диаграмма "коко"
    
    Set iChart = ActiveSheet.ChartObjects("коко").Chart
    Set iSerie = iChart.SeriesCollection(1) 'первый ряд диаграммы
    
    iSerie.HasDataLabels = True
    iSerie.HasDataLabels = True
    
    
    iValues = iSerie.Values
    iMax16# = Application.Large(iValues, Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16))(16)
    For iCount& = 1 To UBound(iValues)
        If iValues(iCount&) > 0 Then
           Set IPoint = iSerie.Points(iCount&)
             IPoint.Format.Fill.ForeColor.RGB = RGB(250, 209, 209)

        End If
    Next
    
End Sub
[/vba]

Автор - kotlovan
Дата добавления - 15.01.2020 в 15:28
Pelena Дата: Среда, 15.01.2020, 16:12 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19405
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Так хотели?
К сообщению приложен файл: 7003816.xlsm (51.2 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТак хотели?

Автор - Pelena
Дата добавления - 15.01.2020 в 16:12
kotlovan Дата: Среда, 15.01.2020, 16:22 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, у меня compile error при нажатии на кнопку и ссылка на sub.
По визуальному оформлению диаграмма правильная. Но макрос ошибку выдает.

[vba]
Код
iAL = Range(iSerie.BubbleSizes).Offset(, 3).Value
[/vba] - данная комбинация выдает адрес третьего столбца после диапазона диаграммы?


Сообщение отредактировал kotlovan - Среда, 15.01.2020, 16:28
 
Ответить
СообщениеPelena, у меня compile error при нажатии на кнопку и ссылка на sub.
По визуальному оформлению диаграмма правильная. Но макрос ошибку выдает.

[vba]
Код
iAL = Range(iSerie.BubbleSizes).Offset(, 3).Value
[/vba] - данная комбинация выдает адрес третьего столбца после диапазона диаграммы?

Автор - kotlovan
Дата добавления - 15.01.2020 в 16:22
Pelena Дата: Среда, 15.01.2020, 16:35 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19405
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Не адрес, а массив значений. От столбца с размерами пузырьков смещение на три столбца вправо.

Проверила на 2016, 2013 и 2010 офисе, нормально отработал.

Попробуйте просто явно задать этот диапазон [vba]
Код
iAL = Range("AL41:AL56").Value
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНе адрес, а массив значений. От столбца с размерами пузырьков смещение на три столбца вправо.

Проверила на 2016, 2013 и 2010 офисе, нормально отработал.

Попробуйте просто явно задать этот диапазон [vba]
Код
iAL = Range("AL41:AL56").Value
[/vba]

Автор - Pelena
Дата добавления - 15.01.2020 в 16:35
kotlovan Дата: Среда, 15.01.2020, 16:57 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, все равно выдает ошибку. У меня офис 2007. Скриншот ошибки прилагаю. Синим выделает текст тоже.

[vba]
Код
Sub проверка()
'Диаграмма "коко"
    
    Set iChart = ActiveSheet.ChartObjects("коко").Chart
    Set iSerie = iChart.SeriesCollection(1) 'первый ряд диаграммы
    
    iSerie.HasDataLabels = True
    
    iAL = Range("AL41:AL56").Value
    iValues = iSerie.Values
    iMax16# = Application.Large(iValues, Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16))(16)
    For iCount& = 1 To UBound(iValues)
        If iAL(iCount&, 1) < 0 Then
           Set IPoint = iSerie.Points(iCount&)
             IPoint.Format.Fill.ForeColor.RGB = RGB(250, 209, 209)
        Else
            IPoint = iSerie.Points(iCount&)
             IPoint.Format.Fill.ForeColor.RGB = RGB(230, 230, 230)
        End If
    Next
    
End Sub
[/vba]
К сообщению приложен файл: 5334389.jpg (37.2 Kb)


Сообщение отредактировал kotlovan - Среда, 15.01.2020, 16:59
 
Ответить
СообщениеPelena, все равно выдает ошибку. У меня офис 2007. Скриншот ошибки прилагаю. Синим выделает текст тоже.

[vba]
Код
Sub проверка()
'Диаграмма "коко"
    
    Set iChart = ActiveSheet.ChartObjects("коко").Chart
    Set iSerie = iChart.SeriesCollection(1) 'первый ряд диаграммы
    
    iSerie.HasDataLabels = True
    
    iAL = Range("AL41:AL56").Value
    iValues = iSerie.Values
    iMax16# = Application.Large(iValues, Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16))(16)
    For iCount& = 1 To UBound(iValues)
        If iAL(iCount&, 1) < 0 Then
           Set IPoint = iSerie.Points(iCount&)
             IPoint.Format.Fill.ForeColor.RGB = RGB(250, 209, 209)
        Else
            IPoint = iSerie.Points(iCount&)
             IPoint.Format.Fill.ForeColor.RGB = RGB(230, 230, 230)
        End If
    Next
    
End Sub
[/vba]

Автор - kotlovan
Дата добавления - 15.01.2020 в 16:57
kotlovan Дата: Среда, 15.01.2020, 17:02 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, при перезапуске файла выдает ошибку:
К сообщению приложен файл: 5941136.jpg (15.5 Kb)
 
Ответить
СообщениеPelena, при перезапуске файла выдает ошибку:

Автор - kotlovan
Дата добавления - 15.01.2020 в 17:02
kotlovan Дата: Среда, 15.01.2020, 17:06 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, скопировал Ваш код в свой файл. Все работает. Большое спасибо.
 
Ответить
СообщениеPelena, скопировал Ваш код в свой файл. Все работает. Большое спасибо.

Автор - kotlovan
Дата добавления - 15.01.2020 в 17:06
RAN Дата: Среда, 15.01.2020, 17:09 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub проверка()
'Диаграмма "коко"
    
    Set iChart = ActiveSheet.ChartObjects("коко").Chart
    Set iSerie = iChart.SeriesCollection(1) 'первый ряд диаграммы
    
    iSerie.HasDataLabels = True
'    iSerie.HasDataLabels = True
    adr = Split(Split(iSerie.Formula, "!")(1), ",")(0)
    Set r = ActiveSheet.Range(adr)
    For i = 1 To r.Rows.Count
    If r(i, 1).Offset(, 5) < 0 Then
iSerie.Points(i).Format.Fill.ForeColor.RGB = RGB(250, 209, 209)
End If
Next
    
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Sub проверка()
'Диаграмма "коко"
    
    Set iChart = ActiveSheet.ChartObjects("коко").Chart
    Set iSerie = iChart.SeriesCollection(1) 'первый ряд диаграммы
    
    iSerie.HasDataLabels = True
'    iSerie.HasDataLabels = True
    adr = Split(Split(iSerie.Formula, "!")(1), ",")(0)
    Set r = ActiveSheet.Range(adr)
    For i = 1 To r.Rows.Count
    If r(i, 1).Offset(, 5) < 0 Then
iSerie.Points(i).Format.Fill.ForeColor.RGB = RGB(250, 209, 209)
End If
Next
    
End Sub
[/vba]

Автор - RAN
Дата добавления - 15.01.2020 в 17:09
  • Страница 1 из 1
  • 1
Поиск:

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