Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Создание спарклайнов и диаграмм через пользовательскую форму редактора VBA, Ошибка Run-time error '448':
 
Спасибо за помощь, разобралась, упростила код создания спарклайнов: ws.Cells(lastRow + 1, 2).SparklineGroups.Add xlSparkColumn, "B2:B" & lastRow
Все работает)
Создание спарклайнов и диаграмм через пользовательскую форму редактора VBA, Ошибка Run-time error '448':
 
Цитата
написал:
Функция GetColumnLetter присутсвует в коде?
Да, присутствует.
' Вспомогательная функция для конвертации номера столбца в букву
Function GetColumnLetter(colNum As Long) As String
   Dim div As Integer
   Dim colName As String
   div = colNum
   Do While div > 0
       div = Int((div - 1) / 26)
       colName = Chr(div * 26 Mod 26 + Asc("A")) & colName
   Loop
   GetColumnLetter = colName
End Function
Создание спарклайнов и диаграмм через пользовательскую форму редактора VBA, Ошибка Run-time error '448':
 
Цитата
написал:
Уберите Location:=.Offset(0, 0) из кода и должно заработать.
Это невозможно, так как Location является обязательным аргументом для метода .Add. Даже закомментировать эту строку не получается - выходит ошибка компиляции. Официально именно такой порядок должен быть Type:
                                                                                                         SourceData:
                                                                                                         Location:
Создание спарклайнов и диаграмм через пользовательскую форму редактора VBA, Ошибка Run-time error '448':
 
Может кто поможет решить проблему? Представленный код VBA предназначен для обработки данных в Excel посредством макросов и выполнения одной из двух операций в зависимости от выбранного пользователем варианта:

Код
'Подключаемся к событию клика по кнопке
Private Sub CommandButton1_Click()
    Call CreateVisuals
End Sub

'Основная процедура построения графиков и спарклайнов
Public Sub CreateVisuals()
    Dim ws As Worksheet
    Dim rngData As Range
    Dim lastRow As Long, lastCol As Long
    Dim dataRange As String
    Dim colLetter As String

    Set ws = ActiveSheet

    'Автоматическое определение границ таблицы
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    Set rngData = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol))

    'Получаем букву столбца по последнему столбцу
    colLetter = GetColumnLetter(lastCol)

    'Выполняем операцию согласно выбору пользователя
    If OptionButton1.Value = True Then
        'Создание спарклайнов
        Dim i As Long
        For i = 2 To lastRow
            dataRange = "=""" & ws.Name & """!$B$" & i & ":$" & colLetter & "$" & i

            With ws.Cells(i, lastCol + 1)
                .SparklineGroups.Add _
                    Type:=xlSparkLine, _
                    SourceData:=dataRange, _
                    Location:=.Offset(0, 0)

                .SparklineGroups.Item(1).Position = xlSparklinePositionCellCenter
            End With
        Next i

    ElseIf OptionButton2.Value = True Then
        'Создание диаграммы
        Dim chtObj As ChartObject
        Set chtObj = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
        With chtObj.Chart
            .SetSourceData Source:=rngData
            .chartType = xlColumnClustered
            .HasTitle = True
            .ChartTitle.Text = "Выручка, тыс.руб."
        End With
        MsgBox "Диаграмма создана"
    Else
        MsgBox "Выберите действие"
    End If

    Unload Me
End Sub


При выборе кнопки "Построить спарклайны" выходит такая ошибка Run-time error '448': Макрорекодер указывает на  SourceData, не понимаю почему, все аргументы для метода .Add были соблюдены, также соблюден официальный порядок параметров для этого метода.
Изменено: Sanja - 05.03.2026 08:40:02 (Обратите внимание - код в сообщении выделяется соответствующим тэгом)
Страницы: 1
Наверх