在 VBA 中开发一个创建简单回归的函数

问题描述 投票:0回答:1

我正在尝试在 VBA 中创建一个函数,当接收一列数据和图形标题时,返回 Excel 中的简单回归图形。这是代码。我已尝试更改代码,但仍然出现相同的值错误。

Function ModeloEstimacionUnicaColumna(ColumX As Range, TitleGraphic As String) As Boolean
    
    If ColumnaX Is Nothing Then
        MsgBox "La columna de datos está vacía."
        ModeloEstimacionUnicaColumna = False
        Exit Function
    End If
    
    
    Dim DatosX As Variant
    Dim Modelo As Object
    Set Modelo = CreateObject("Excel.Application")

    
    DatosX = ColumnaX.Value

    
    Modelo.Workbooks.Add
    Modelo.ActiveSheet.Cells(1, 1).Resize(UBound(DatosX), 1).Value = Application.Transpose(DatosX)
    Modelo.Charts.Add
    Modelo.ActiveChart.SetSourceData Source:=Modelo.ActiveSheet.Range("Sheet1!$A$1:$A$" & UBound(DatosX))
    Modelo.ActiveChart.ChartType = xlXYScatterLines
    Modelo.ActiveChart.Location Where:=xlLocationAsNewSheet
    Modelo.ActiveChart.HasTitle = True
    Modelo.ActiveChart.ChartTitle.Text = TitleGraphic

    
    ModeloEstimacionUnicaColumna = True
End Function

我不确定是否有一些Excel库我没有应用或者我在代码中是否犯了一些严重的语法错误。 我希望一旦我为函数提供所需的变量,它将返回所需的简单回归图。

excel vba linear-regression
1个回答
0
投票

似乎有一些问题;

  1. “ColumX”和“ColumnaX”。我使用“ColumnX”来保持一致。

  2. “Modelo”对象,使用现有的 Excel 应用程序而不是创建新的应用程序。

  3. 源数据引用“Sheet1!$A$1:$A$”& UBound(DatosX)。

    函数 ModeloEstimacionUnicaColumna(ColumnX 作为范围,TitleGraphic 作为字符串)作为布尔值

    If ColumnX Is Nothing Then
        MsgBox "La columna de datos está vacía."
        ModeloEstimacionUnicaColumna = False
        Exit Function
    End If
    
    ' Check if ColumnX is a single column.
    If ColumnX.Columns.Count > 1 Then
        MsgBox "La columna de datos no es válida. Debe ser una única columna."
        ModeloEstimacionUnicaColumna = False
        Exit Function
    End If
    
    Dim DatosX As Variant
    Dim ChartSheet As Worksheet
    Dim MyChart As ChartObject
    
    DatosX = ColumnX.Value
    Set ChartSheet = ThisWorkbook.Sheets.Add
    Set MyChart = ChartSheet.ChartObjects.Add(Left:=10, Width:=375, Top:=75, Height:=225)
    
    ' Set source data directly.
    MyChart.Chart.SetSourceData Source:=ColumnX
    
    
    MyChart.Chart.ChartType = xlXYScatterLines
    MyChart.Chart.HasTitle = True
    MyChart.Chart.ChartTitle.Text = TitleGraphic
    
    ModeloEstimacionUnicaColumna = True
    

    结束功能

© www.soinside.com 2019 - 2024. All rights reserved.