excel - trabaja - Error 91 en la función de clase
microsoft excel funciones (1)
Usted definió la colección privada en el nivel del módulo como pCharColorItems
, pero nunca la inicializa en el método de inicialización de la clase. En su lugar, utiliza una variable de colección Colors
ámbito local.
Private Sub Class_Initialize() Dim Cci As ChartColorItem Dim Colors As Collection Set Colors = New Collection
Necesita usar pChartColorItems
en pChartColorItems
lugar.
Private Sub Class_Initialize()
Dim Cci As ChartColorItem
Dim Colors As Collection
Set pChartColorItems = New Collection
Set Cci = New ChartColorItem
Cci.Red = 149
Cci.Green = 55
Cci.Blue = 53
Cci.ColorID = "Pie1"
pChartColorItems.Add Cci, Key:=Cci.ColorID
Set Cci = Nothing
Set Cci = New ChartColorItem
Cci.Red = 148
Cci.Green = 138
Cci.Blue = 84
Cci.ColorID = "Pie2"
pChartColorItems.Add Cci, Key:=Cci.ColorID
Set Cci = Nothing
End Sub
Pero hay otro error en esta línea de GetRGB
.
x = RGB(Cci.Red, Cci.Green, Cci.Blue)
Has declarado x
como un Entero, cuando la función RGB
devuelve un valor largo. El valor de "Pie1" causa un error de desbordamiento.
Con Access 2010, estoy recopilando información y soltándola en una hoja de cálculo de Excel. Cuando ejecuto el siguiente código, obtengo
Error "91" en tiempo de ejecución:
Variable de objeto o con bloque no establecido
en mi clase en esta línea Set Cci = ChartColorItems(ColorID)
en Public Function GetRGB(ByRef ColorID As String) As Integer
La clase ''ChartColors'':
Option Compare Database
Option Explicit
Private pChartColorItems As Collection
Public Property Get ChartColorItems() As Collection
Set ChartColorItems = pChartColorItems
End Property
Public Property Set ChartColorItems(ByRef lChartColorItem As Collection)
Set pChartColorItems = lChartColorItem
End Property
Public Function GetRGB(ByRef ColorID As String) As Integer
Dim Cci As ChartColorItem
Dim x As Integer
''---------------------------------------------------
''Error happens here:
Set Cci = ChartColorItems(ColorID)
''---------------------------------------------------
x = RGB(Cci.Red, Cci.Green, Cci.Blue)
GetRGB = x
Set Cci = Nothing
End Function
Private Sub Class_Initialize()
Dim Cci As ChartColorItem
Dim Colors As Collection
Set Colors = New Collection
Set Cci = New ChartColorItem
Cci.Red = 149
Cci.Green = 55
Cci.Blue = 53
Cci.ColorID = "Pie1"
Colors.Add Cci, Key:=Cci.ColorID
Set Cci = Nothing
Set Cci = New ChartColorItem
Cci.Red = 148
Cci.Green = 138
Cci.Blue = 84
Cci.ColorID = "Pie2"
Colors.Add Cci, Key:=Cci.ColorID
Set Cci = Nothing
End Sub
y la clase ChartColorItem:
Option Compare Database
Option Explicit
Private pColorID As String
Private pRed As Integer
Private pGreen As Integer
Private pBlue As Integer
Public Property Get ColorID() As String
ColorID = pColorID
End Property
Public Property Let ColorID(ByRef x As String)
pColorID = x
End Property
Public Property Get Red() As Integer
Red = pRed
End Property
Public Property Let Red(ByRef x As Integer)
pRed = x
End Property
Public Property Get Green() As Integer
Green = pGreen
End Property
Public Property Let Green(ByRef x As Integer)
pGreen = x
End Property
Public Property Get Blue() As Integer
Blue = pBlue
End Property
Public Property Let Blue(ByRef x As Integer)
pBlue = x
End Property
Cuando depuro, el código ChartColorItems()
por el elemento ChartColorItems()
, el error ocurre después de la End Function
y me deja en la línea indicada anteriormente.
Esto es muy similar a algún código que escribí a principios de esta semana, la principal diferencia es que estoy poblando mis ChartColors utilizando el sub de Class_Initialize
, ya que estoy tratando de almacenar un conjunto fijo de colores, mientras que mi código anterior estaba reuniendo datos e insertarlo en la clase de una manera más ''normal''.