tutorial trabaja microsoft ingresar funciones funcion con como comandos basicas excel excel-vba access-vba ms-access-2010

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''.