Hola, compañeros:
Me temo que no he sido capaz de explicar convenientemente el problema en el título del tema. En realidad, es que no es sencillo de explicar. Vayamos por partes, como dijo Jack.
Defino una estructura en un formulario y tres matrices —en realidad, vectores, pero vamos, no nos pongamos quejicosos—:
Código:
Public Struct struCampos
Nombre As String '?[0] Nombre en el programa de la columna ¿Quitar?'
Texto As String ' [1] Título de la columna, traducible'
Tipo As String ' [2] Cualquiera de los cuatro tipos posibles'
Contenido As Variant ' [3] Contenido por defecto para la columna:'
' * Para texto: texto plano'
' * Para listas:'
' ?[0] índice entero ¿Quitar?'
' [1] texto plano'
' [2] color papel'
' [3] color tinta'
' * Para fechas: a definir'
Color As Integer ' [4] Color de fondo para toda la columna'
' NOTE: Aquí añadir gestión de fondos definiendo una banderita de auto'
Resaltar As Boolean ' [5] ¿Se resaltan los contenidos de esta lista?'
End Struct
Public $cFijos As New StruCampos[] ' Campos obligatorios'
Public $cRemanentes As New StruCampos[] ' Campos definidos no mostrados'
Public $cUsados As New StruCampos[] ' Usados o visibles en columnas'
—Olvidémonos de los comentarios y de las malas praxis con los nombres, por el momento

—.
Inserto algunos elementos vacíos, pero les cambio la propiedad
.Nombre:
Código:
For i = 0 To lsoRemanentes.Count - 1
Dim cDos As New StruCampos
$cRemanentesP.Add(cDos)
$cRemanentesP.Last.Nombre = lsoRemanentes[i].Text
Next
Y resulta que siempre añade el mismo, es decir, cuando exploro la matriz todos, absolutamente todos los elementos son el mismo, en concreto, el último que he pasado.
Además, si se me ocurre pasar estas matrices entre formularios, por ejemplo:
Código:
$cRemanentesP = FPral.$cRemanentes
$cUsadosP = FPral.$cUsados
$cFijosP = FPral.$cFijos
Resulta que pasa las matrices por referencia, no por valor, por lo que me las modifica en el origen. Es decir, si hago
$cFijosP en el nuevo formulario para trabajar y después ver si hago los cambios definitivos y los paso o no a
FPral.$cFijos, resulta que no, porque modifica ambas matrices como si fuesen la misma.
Estoy convencidísimo que es una auténtica chorrada, pero mi torpeza e ignorancia me impide verlo. en fin, a ver si algún alma caritativa me ilumina. ¡Y muchas gracias de antemano!