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]
Приветствую! 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
К сообщению приложен файл:
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
Так хотели?
"Черт возьми, Холмс! Но как??!!" Ю-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] - данная комбинация выдает адрес третьего столбца после диапазона диаграммы?
Pelena, у меня compile error при нажатии на кнопку и ссылка на sub. По визуальному оформлению диаграмма правильная. Но макрос ошибку выдает. [vba]Код
iAL = Range(iSerie.BubbleSizes).Offset(, 3).Value
[/vba] - данная комбинация выдает адрес третьего столбца после диапазона диаграммы? kotlovan
Сообщение отредактировал 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]
Не адрес, а массив значений. От столбца с размерами пузырьков смещение на три столбца вправо. Проверила на 2016, 2013 и 2010 офисе, нормально отработал. Попробуйте просто явно задать этот диапазон [vba]Код
iAL = Range("AL41:AL56").Value
[/vba] Pelena
"Черт возьми, Холмс! Но как??!!" Ю-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]
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
Сообщение отредактировал 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, при перезапуске файла выдает ошибку:
Pelena, при перезапуске файла выдает ошибку: kotlovan
Ответить
Сообщение Pelena, при перезапуске файла выдает ошибку: Автор - kotlovan Дата добавления - 15.01.2020 в 17:02
kotlovan
Дата: Среда, 15.01.2020, 17:06 |
Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Pelena, скопировал Ваш код в свой файл. Все работает. Большое спасибо.
Pelena, скопировал Ваш код в свой файл. Все работает. Большое спасибо. kotlovan
Ответить
Сообщение Pelena, скопировал Ваш код в свой файл. Все работает. Большое спасибо. Автор - kotlovan Дата добавления - 15.01.2020 в 17:06
RAN
Дата: Среда, 15.01.2020, 17:09 |
Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
[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
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение [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