visual try number for error err catch vba collections vb6 excel-vba ms-office

try - on error resume next vba



Errores al agregar elementos a una colección VBA/VB6 (4)

Intente eliminar los parens alrededor de itm en el complemento:

bag.Add itm

o

bag.Add itm, key

Ha pasado un tiempo desde que tuve que trabajar con VBA / VB6, pero creo que al incluir los paréntesis, se pasa el valor en lugar de hacerlo por referencia. Podría estar equivocado.

Todavía estoy aprendiendo VBA y no puedo entender si tengo tantos problemas con un objeto Collections.

Tengo una función que agrega objetos personalizados (creé una clase muy simple para almacenar algunos datos) que hace el tipo típico de "leer datos, crear una representación de objetos, pegarlo en colecciones".

Si trato de agregar una "clave" a la llamada a bag.add aparece el mensaje "Error de compilación. Esperado: =".

Si no funciona, parece que funcionó cuando ejecuto el programa y dice "Compile Error. Argument not optional" y resalta la línea "getRevColumns = bag".

¡No puedo por la vida de mí descubrir qué está pasando! Sospecho que hay algo mal con la forma en que inicié mi bolsa? PD: columnMap es el nombre de mi clase personalizada.

Function getRevColumns() As Collection Dim rng As Range Dim i As Integer Dim bag As Collection Dim opManCol As Integer, siebelCol As Integer Dim opManColName As String, siebelColName As String Dim itm As columnMap Set bag = New Collection Set rng = shSiebelMap.UsedRange.Columns(5) i = 1 For i = 1 To rng.Rows.count If StrComp(UCase(rng.Cells(i).value), "Y") = 0 Then opManCol = rng.Rows(i).OffSet(0, -2).value opManColName = rng.Rows(i).OffSet(0, -4) siebelCol = rng.Rows(i).OffSet(0, -1).value siebelColName = rng.Rows(i).OffSet(0, -3) Set itm = New columnMap itm.opManColName = opManColName itm.opManColNumber = opManCol itm.siebelColName = siebelColName itm.siebelColNumber = siebelCol ''WHY DOESN''T IT WORK!'''' bag.Add (itm) ''MsgBox "opMan Col: " & opManColName & " : " & opManCol & ". Siebel Col: " & siebelColName & " : " & siebelCol'' End If Next i getRevColumns = bag End Function


Tienes que decir

set getRevColumns = bag

también supongo que tienes un problema con el complemento. No sé por qué es esto, pero funciona en

bag.add itm

Probé todo de una manera simple aquí está mi código de trabajo

Sub myroutine() Dim bag As Collection Dim itm As clsSimple Set bag = getTheCollection() Set itm = bag.Item(1) MsgBox (itm.someObjectValue) Set itm = bag.Item(2) MsgBox (itm.someObjectValue) End Sub Function getTheCollection() As Collection Dim bag As Collection Dim itm As clsSimple Set bag = New Collection Set itm = New clsSimple itm.someObjectValue = "value 1" bag.Add itm Set itm = New clsSimple itm.someObjectValue = "value 2" bag.Add itm Set getTheCollection = bag End Function

La clase es realmente simple:

Public someObjectValue As String

Espero eso ayude


Tuve un problema similar con una colección.

Lo reduje pero no lo configuré con Nuevo o lo inicialicé.

Básicamente tuve

Dim collection1 As Collection ... collection1.Add item ''no compile error just empty

Agregué lo siguiente antes de agregar

Set collection1 = New Collection Call collection1.init

luego funcionó como un amuleto ... También moví la declaración Dim desde el Sub hasta la parte superior del Módulo para convertirla en una variable de clase


la bolsa es un objeto Regla n. ° 1 para uso de objetos

Set getRevColumns = bag