VBA Array

26/10/2009 - 13:30 por Fernando | Informe spam
Muy buenas:

He escrito el siguiente procedimiento para que llene una matriz y
posteriormente la transcriba en un rango de celdas; la matriz se llena
correctamente pero a la hora de trasncribir los datos en el rango de celdas
únicamente me pone los datos del primer elemento de la matriz. ¿Podríais
ayudarme por favor?
Muchas gracias por adelantado.

Sub PeriodArray()
Dim Period()
Dim LoadBook As Object
Set LoadBook = Workbooks("UPLOAD_TM1_SAPR3.XLS").Sheets("List")
Set TheRange = Sheets("Export").Range(Cells(1, 3), Cells(Filas, 3))
Set Libro = Workbooks("TRISA2010.xls").Sheets("TRISA2010")
ReDim Period(1 To Filas)
For i = 1 To Filas
Mes = Libro.Range("D" & i + 1).Value
Select Case Mes
Case "pro Jan"
Meses = "01"
Case "pro Feb"
Meses = "02"
Case "pro Màr"
Meses = "03"
Case "pro Apr"
Meses = "04"
Case "pro Mai"
Meses = "05"
Case "pro Jun"
Meses = "06"
Case "pro Jul"
Meses = "07"
Case "pro Aug"
Meses = "08"
Case "pro Sep"
Meses = "09"
Case "pro Okt"
Meses = "10"
Case "pro Nov"
Meses = "11"
Case "pro Dez"
Meses = "12"
End Select
Period(i) = Meses
Next i
TheRange.Value = Period
End Sub
 

Leer las respuestas

#1 Cacho
27/10/2009 - 00:25 | Informe spam
Hola! Fernando.
En un archivo nuevo (en blanco) incorpora un módulo con el siguiente código:
______________________________

Option Base 1

Sub DescargarUnVectorEnLaHoja()
Dim MiVector(4)

MiVector(1) = "Ésta"
MiVector(2) = "es"
MiVector(3) = "una"
MiVector(4) = "prueba"

Cells.Delete
Cells.HorizontalAlignment = xlCenter

Rem Ésto es lo que estás haciendo
Range("a1:a4").Value = MiVector

Rem Ésto es lo que deberías hacer
Range("c3:c6").Value = WorksheetFunction.Transpose(MiVector)

Rem Notar que el vector es un arreglo "horizontal"
Range("c1:f1").Value = MiVector
End Sub
______________________________

Recorre lentamente las tres asignaciones:

Range("a1:a4").Value = MiVector
Range("c3:c6").Value = WorksheetFunction.Transpose(MiVector)
Range("c1:f1").Value = MiVector


de modo que puedas obtener conclusiones útiles.

Y no dejes de advertir que ocurre si no incorporas la instruciión:
Option Base 1


Saludos, Cacho.

Preguntas similares