Error 9 al ejecutar código

02/09/2003 - 23:34 por Mario Alberto | Informe spam
Hola:

Tengo el siguiente código que modifique de un mensaje posteado el 10-may-03
por UNITECH, sin embargo al ejecutarlo después de modificarlo me da "error
9" "el subíndice esta fuera del intervalo" en la línea
.Offset(1, Col) = ThisWorkbook.Worksheets(1).Range(Nombres(Col))

No tengo mucha idea de como corregirlo o de si tiene que ver con la
asignación de nombres en total 81 para igual número de columnas

Gracias por la ayuda

Mario Alberto


Sub Agregar_Legajos()
Dim Nombres As Variant
Dim Col As Integer

'Agrega en la siguiente matriz los nombres "entre comillas" _
'y separandolos con una coma(,)

Nombres = Array("NO", "MES", "AÑO", "NCIA", "CIA", "NTRAB", _
"TRAB", "FINFORME", "FAUDITORIA", "FSEG1", "FSEG2", "FSEG3", _
"DLEG", "ALEG", "GTE", "RESP", "AUD1", "AUD2", "AUD3", "AUD4", _
"AUD5", "AUD6", "AUD7", "AUD8", "AUD9", "DGTE", "DRESP", _
"DAUD1", "DAUD2", "DAUD3", "DAUD4", "DAUD5", "DAUD6", "DAUD7", _
"DAUD8", "DAUD9", "HGTE", "HRESP", "HAUD1", "HAUD2", "HAUD3", _
"HAUD4", "HAUD5", "HAUD6", "HAUD7", "HAUD8", "HAUD9", "IGTE", _
"IRESP", "IAUD1", "IAUD2", "IAUD3", "IAUD4", "IAUD5", "IAUD6", _
"IAUD7", "IAUD8", "IAUD9", "LGTE", "LRESP", "LAUD1", "LAUD2", _
"LAUD3", "LAUD4", "LAUD5", "LAUD6", "LAUD7", "LAUD8", "LAUD9", _
"LG1", "LG2", "LG3", "LG4", "LG5", "LG6", "DLG1", "DLG2", "DLG3", _
"DLG4", "DLG5", "DLG6")
Workbooks.Open FileName:= _
"C:\Mis Documentos\BDNACOBRE\Base de datos Portada Legajos.xls"
With Range("A65536").End(xlUp)
For Col = 0 To UBound(Nombres)
.Offset(1, Col) = ThisWorkbook.Worksheets(1).Range(Nombres(Col))
Next
End With
ActiveWorkbook.Save
End Sub
 

Leer las respuestas

#1 Héctor Miguel
03/09/2003 - 07:31 | Informe spam
Hola, Mario Alberto!

... codigo que modifique de un mensaje ... me da "error 9 subíndice fuera del intervalo" en la línea
.Offset(1, Col) = ThisWorkbook.Worksheets(1).Range(Nombres(Col))
[...]
For Col = 0 To UBound(Nombres)
.Offset(1, Col) = ThisWorkbook.Worksheets(1).Range(Nombres(Col))
[...]



==> Los elementos en una matriz (normalmente) se "cuentan" DESDE 0 (cero) HASTA n_elementos MENOS 1 (uno)
(tus 81 elementos "van" de 0 a 80) ... "a menos que" ...
(me parece que es el caso), AL INICIO del modulo se tenga la declaracion =>Option Base 1<= ... con lo cual ...
el primer nombre en ...Range(Nombres(Col)) =>["nombre cero"]<= ¡ NO EXISTE !!! :((
deberas "iniciar" el contador en uno (1) y "restarselo" al "Offset" del "copiar donde" (para "conservar" la columna inicial)
(tendrias que) modificar esa parte del codigo a: == With Range("a65536").End(xlUp)
For Col = 1 To UBound(Nombres)
.Offset(1, Col - 1) = ThisWorkbook.Worksheets(1).Range(Nombres(Col))
Next
End With
o... "regresar" a cero la opcion "base" [ELIMINAR "Option Base 1"] =>SI NO TE "AFECTA" para otras partes de codigo<_______
Saludos,
Héctor.
MS-MVP

Preguntas similares